【发布时间】:2017-03-24 11:02:22
【问题描述】:
我正在结合 Swift 代码和第三方库(用 Obj-C 编写)。我有一个带有 u UISegmentedController 的 UIViewController,我想在每次推送一个段或再次推送同一段时触发它。
在我的 Swift 代码中,我有以下内容:
override func viewDidLoad() {
super.viewDidLoad()
//setup
items = ["newTab".localized,"topTab".localized,"categoryTab".localized]
carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items as [AnyObject], delegate: self)
carbonTabSwipeNavigation.insertIntoRootViewController(self)
self.style()
self.view.userInteractionEnabled = true
carbonTabSwipeNavigation.carbonSegmentedControl!.addTarget(self, action: #selector(OverviewFolder.changesMade), forControlEvents: UIControlEvents.ValueChanged)
}
func changesMade() {
switch carbonTabSwipeNavigation.carbonSegmentedControl!.selectedSegmentIndex {
case 0:
print("tab 1")
case 1:
print("tab 2")
case 2:
print("tab 3")
default:
print("nope")
}
}
在库中我添加了以下代码:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSInteger current = self.selectedSegmentIndex;
[super touchesEnded:touches withEvent:event];
if (current == self.selectedSegmentIndex)
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
所以基本上我想在每次用户按下一个段时触发一个 ValueChanged 操作(即使它是同一个段)。目前,当我按下同一段时,它会第二次触发,但之后 UISegmentController 变得无响应(无法再切换段)。
【问题讨论】:
-
这是什么方法:
#selector(OverviewFolder.changeImageView)? -
@AlexanderDoloz 抱歉,这是复制/粘贴错误,我更改了它。应该是changesMade(在代码中没问题)
标签: ios objective-c swift uisegmentedcontrol