在内部添加方法时 UISegmentedControl Changed 事件失火
这是我的 UISegmentedControl
的 UIControlEventValueChanged
事件代码:
- (void)segmentAction:(id)sender{
if([sender selectedSegmentIndex] == 0){
pendingIsShowing = YES;
[freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}else if([sender selectedSegmentIndex] == 1){
pendingIsShowing = NO;
[self showAvailableCuts:sender];
[freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}
}
我的问题是当值更改时,[self showAvailableCuts:sender]
是调用,但段控件不再更改其索引。如果我注释掉方法调用,它就可以正常工作...我尝试做的是将分段控件传递到 [self showAvailableCuts:sender]
并以这种方式更改它,但无济于事。 ..
- (void)showAvailableCuts:(id)sender{
if(!pendingIsShowing){
NSString *path =@"https://WebserviceURL";
NSString* escapedUrl = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//[sender setSelectedIndex:1];
NSLog(@"%@", escapedUrl);
[self parseXMLFileAtURL:escapedUrl];
}
}
我不确定为什么会发生这种情况...
Here is my code for the UIControlEventValueChanged
event for a UISegmentedControl
:
- (void)segmentAction:(id)sender{
if([sender selectedSegmentIndex] == 0){
pendingIsShowing = YES;
[freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}else if([sender selectedSegmentIndex] == 1){
pendingIsShowing = NO;
[self showAvailableCuts:sender];
[freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}
}
My problem is when the value is changed, the [self showAvailableCuts:sender]
is called, but the segment control no longer changes its index. If I comment out the method call, it works fine...What I tried to do was pass in the segmented control into [self showAvailableCuts:sender]
and change it that way, but to no avail...
- (void)showAvailableCuts:(id)sender{
if(!pendingIsShowing){
NSString *path =@"https://WebserviceURL";
NSString* escapedUrl = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//[sender setSelectedIndex:1];
NSLog(@"%@", escapedUrl);
[self parseXMLFileAtURL:escapedUrl];
}
}
I'm not sure why this is occurring...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不看
[self showAvailableCuts:sender];
的代码,我能想到的就是 - 为什么需要传递“sender”对象本身?只需修改 showAvailableCuts 方法,以便您只需要传递所需的值,例如[sender titleForSegmentAtIndex:]
、[sender selectedSegmentIndex]
等。好的,首先是 setter应该是
[sender setSelectedSegmentIndex:index]
而不是您注释掉的内容。我自己成功地使用了这个 -Without looking at the code for
[self showAvailableCuts:sender];
all I can think of is - why do you need to pass the 'sender' object itself? Just modify the showAvailableCuts method so that you need to pass only the required value(s) like[sender titleForSegmentAtIndex:]
,[sender selectedSegmentIndex]
etc.ok, firstly the setter should be
[sender setSelectedSegmentIndex:index]
not what you have commented out. I have myself successfully used this -