gpt4 book ai didi

ios - Swift:如何使SegmentedControl通知通过滑动完成的值变化?

转载 作者:行者123 更新时间:2023-11-30 13:57:53 25 4
gpt4 key购买 nike

我在 UITableViewCell 自定义类中进行了分段控制。我添加了滑动手势,以便也可以通过滑动来修改值。在 cellForRowAtIndexPath 方法内部。在 awakeFromNib() 方法中,我添加了这一行:

segmentControl.addTarget(self, action: "segmentValueChanged:", forControlEvents: .ValueChanged)

观察分段控件值的变化。这是上述方法的实现

    func segmentValueChanged(sender: AnyObject){

if segmentControl.selectedIndex == 0 {

segmentControl.thumbColor = UIColor(red: 231.0/255.0, green: 76.0/255.0, blue: 60.0/255.0, alpha: 1.0)
segmentControl.selectedLabelColor = UIColor.whiteColor()
segmentControl.unselectedLabelColor = UIColor.grayColor()


}else if segmentControl.selectedIndex == 1{

segmentControl.thumbColor = UIColor(red: 46.0/255.0, green: 204.0/255.0, blue: 113.0/255.0, alpha: 1.0)
segmentControl.selectedLabelColor = UIColor.grayColor()
segmentControl.unselectedLabelColor = UIColor.whiteColor()

}

这是我处理滑动的函数

 func handleSwipes(sender:UISwipeGestureRecognizer)

{
if segmentControl.selectedIndex == 1 && sender.direction == .Left

{

self.segmentControl.selectedIndex = 0

}

if segmentControl.selectedIndex == 0 && sender.direction == .Right

{

self.segmentControl.selectedIndex = 1

}

}

问题是:当我滑动segmentValueChanged时,没有注意到selectedIndex值有任何变化?我尝试使用目标和发件人,但不幸的是没有任何好的结果

提前致谢

编辑:

我在 cellForRowAtIndexPath 内添加手势

let leftSwipe = UISwipeGestureRecognizer(target: cell, action: Selector("handleSwipes:"))

    let rightSwipe = UISwipeGestureRecognizer(target: cell, action: Selector("handleSwipes:"))

leftSwipe.direction = .Left

rightSwipe.direction = .Right

cell.segmentControl.thumbView.addGestureRecognizer(leftSwipe)

cell.segmentControl.thumbView.addGestureRecognizer(rightSwipe)

编辑:在自定义段控件中我发现了这个方法,也许编辑它可以解决问题,但我不知道该怎么做

override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {

let location = touch.locationInView(self)

var calculatedIndex : Int?
for (index, item) in labels.enumerate() {
if item.frame.contains(location) {
calculatedIndex = index
}
}


if calculatedIndex != nil {
selectedIndex = calculatedIndex!
sendActionsForControlEvents(.ValueChanged)
}

return false
}

最佳答案

不幸的是,您无法通过更改所选索引来触发分段控制值的更改

您可以调用

segmentValueChanged(segmentedControl)

最后

handleswipes()

更新了sampleTableReuse中的代码

请将此仅用作灵感并尝试相应地修改您的代码

关于ios - Swift:如何使SegmentedControl通知通过滑动完成的值变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com