我正在使用带有导航项的TabBar应用,其中包含UISegmentedControl
。
当捕捉到“值已更改”事件时,我已连接了一个方法。
该方法总是将0捕获为SegmentIndex ...
这是我的头文件:
#import <UIKit/UIKit.h>
@interface GraphNavController : UINavigationController {
IBOutlet UIImage *image;
CGPoint gestureStartPoint;
UISegmentedControl *segmentedControl;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(IBAction) segmentedControlIndexChanged;
-(void)journalier;
-(void)mensuel;
-(void)annuel;
@property (nonatomic, retain) IBOutlet UIImage *image;
@property (nonatomic, retain) IBOutlet UISegmentedControl *segmentedControl;
@end
方法在这里:
-(IBAction) segmentedControlIndexChanged{
switch (self.segmentedControl.selectedSegmentIndex) {
case 0:
NSLog(@"1");
break;
case 1:
NSLog(@"2");
break;
case 2:
NSLog(@"3");
break;
default:
break;
}
}
我希望我们能找到解决方案
非常感谢
答案 0 :(得分:5)
此问题的可能解释是 self.segmentedControl 为零。 self.segmentedControl是IBOutlet吗?或者在代码中创建?检查self.segmentedControl == nil。
答案 1 :(得分:0)
我遇到了同样的问题并且与nill UISegmentedControl的错误作斗争。
我发现了答案。
有时您遇到同样的问题但是您在XIB中拥有所有连接。
问题:你在self.segmentedControl中有nill。 在大多数情况下,当您在XIB中连接所有内容时,它也无法正常工作。
原因:由于研究Objective-C的不同,我们使用不同风格的编写代码。
决定:例如,我们在界面 UISegmentedControl * control; 中编写 当你@synthesize你会怎么做? 如果写的 @synthesize控制= _Control; 强>你将永远有nill当编写这样的的NSLog(@ “%i” 的,control.selectedSegmentIndex)强>
所以我们在 @synthesize 或代码中遇到了错误。
决策
你写@synthesize控件的人;使用control.selectedSegmentIndex
你写@synthesize control = _control;使用_control.selectedSegmentIndex
一切都会正常。