单击已选择的段控件 swift [英] Click on the already selected segment control swift

查看:21
本文介绍了单击已选择的段控件 swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有 4 个段的 UISegmentedControl.当它被选中时,它应该弹出视图.当弹出窗口关闭并尝试单击相同的段索引时,它应该再次显示弹出窗口.使用以下在弹出关闭后点击同一段索引没有任何动作.

I have an UISegmentedControl with 4 segments. When it is selected, it should pop up view. And when the pop up dismissed, and trying to click on same segment index it should again show the pop up. By using following does not have any action on click of same segment index after pop up dissmissed.

segHeader.addTarget(self, action: Selector("valuechange:"), forControlEvents: .AllEvents)

segHeader.addTarget(self, action: Selector("valuechange:"), forControlEvents: .ValueChanged)

推荐答案

经过大量研究能够解决.

After lot of research am able to solve it.

我在这里写答案,希望以后能帮到其他人.

Am writing answer here may it will be helpfull to others in future.

当按下段控件时写下面的代码.

when the segment controll is pressed write below code.

@IBAction func segHeaderPressed(sender: UISegmentedControl) {

@IBAction func segHeaderPressed(sender: UISegmentedControl) {

如果 segHeader.selectedSegmentIndex == 0{

if segHeader.selectedSegmentIndex == 0{

让 sortedViews = sender.subviews.sort( { $0.frame.origin.x <$1.frame.origin.x } )

let sortedViews = sender.subviews.sort( { $0.frame.origin.x < $1.frame.origin.x } )

        for (index, view) in sortedViews.enumerate() {
            if index == sender.selectedSegmentIndex {
                view.backgroundColor = iOSBlueColor // UIColor.blueColor()
            } else {
                view.backgroundColor = UIColor.clearColor()
            }
        }

selectedInd = -1

selectedInd = -1

//你的代码...}else if(segHeader.selectedSegmentIndex == 1){

//your code ... }else if(segHeader.selectedSegmentIndex == 1){

        let sortedViews = sender.subviews.sort( { $0.frame.origin.x < $1.frame.origin.x } )

        for (index, view) in sortedViews.enumerate() {
            if index == sender.selectedSegmentIndex {
                view.backgroundColor = iOSBlueColor //UIColor.blueColor()
            } else {
                view.backgroundColor = UIColor.clearColor()
            }
        }

//你的代码...}else if(segHeader.selectedSegmentIndex == 2){

// your code ... }else if(segHeader.selectedSegmentIndex == 2){

让 sortedViews = sender.subviews.sort( { $0.frame.origin.x <$1.frame.origin.x } )

let sortedViews = sender.subviews.sort( { $0.frame.origin.x < $1.frame.origin.x } )

        for (index, view) in sortedViews.enumerate() {
            if index == sender.selectedSegmentIndex {
                view.backgroundColor = iOSBlueColor //UIColor.blueColor()
            } else {
                view.backgroundColor = UIColor.clearColor()
            }
        }

}else if(segHeader.selectedSegmentIndex == 3){

}else if(segHeader.selectedSegmentIndex == 3){

让 sortedViews = sender.subviews.sort( { $0.frame.origin.x <$1.frame.origin.x } )

let sortedViews = sender.subviews.sort( { $0.frame.origin.x < $1.frame.origin.x } )

        for (index, view) in sortedViews.enumerate() {
            if index == sender.selectedSegmentIndex {
                view.backgroundColor = iOSBlueColor //UIColor.blueColor()
            } else {
                view.backgroundColor = UIColor.clearColor()
            }
        }

}}

基本上分段控制功能是一旦被选中,如果你再次点击它不会响应.所以我只是改变所选片段的背景颜色.希望它可以帮助某人.

basically segmented controll functionality is once it is selected if you tap again same it will not respond. so am just changing the background colors of selected segment. hope it helps someone.

这篇关于单击已选择的段控件 swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆