我遇到这种情况:
// CustViewController.h
...
IBOutlet UISegmentedControl *sgmController;
...
@property (nonatomic, retain) IBOutlet UISegmentedControl *sgmController;
// CustViewController.m
@synthesize sgmController;
- (IBAction)apriRassegnePrecedenti {
NSString *model;
NSString *nibToLoad;
UIBarButtonItem *backBarButtonItem;
VecchieRassegneViewController *vecchieRassegne;
if ( self.sgmRassegna.selectedSegmentIndex == 1 ) {
backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Rass. odierne" style:UIBarButtonItemStylePlain target:self action:nil];
model = [NSString stringWithString:[[UIDevice currentDevice] model]];
if ( [model isEqualToString:@"iPhone"] || [model isEqualToString:@"iPhoneSimulator"] ) {
nibToLoad = [NSString stringWithString:@"VecchieRassegneViewController"];
} else {
nibToLoad = [NSString stringWithString:@"VecchieRassegneViewControllerPAD"];
}
vecchieRassegne = [[VecchieRassegneViewController alloc] initWithNibName:nibToLoad bundle:nil];
self.sgmRassegna.selectedSegmentIndex = 0; // The Crash comes here.
[self.navigationController pushViewController:vecchieRassegne animated:YES];
}
[backBarButtonItem release];
[vecchieRassegne release];
}
IBOutlet已正确链接,我无法理解为什么会出错。 一些提示?
编辑:我在另一个应用程序中完成了ssame操作,它运行良好;我仍然无法确定导致崩溃的原因。我将发布完整的功能。 正如答案中所述,该事件是在“价值变化”处理的。 这是有效的测试功能:- (IBAction)pushDiTest {
ASecondView *secondView;
secondView = [[ASecondView alloc] initWithNibName:@"ASecondView" bundle:nil];
if ( self.sgmTest.selectedSegmentIndex == 1 ) {
self.sgmTest.selectedSegmentIndex = 0;
[self.navigationController pushViewController:secondView animated:YES];
}
[secondView release];
}
答案 0 :(得分:0)
我假设您指定的(IBAction)aFunction在InterfaceBuilder中链接。 在“界面”构建器中设置时,您将设置为TouchUpInside。 而是选择Event作为ValueChanged。
将您的功能名称更改为
-(void)aFunction:(UISegmentedControl*)sender
并将接口构建器中的段控件与ValueChanged事件链接起来。不是TouchUpInside
答案 1 :(得分:0)
解决。也许我不知道如何使用Debugger Consolle,但我被卡住了,因为它告诉我崩溃发生在
self.sgmRassegna.selectedSegmentIndex = 0;
自此操作触发“Value Changed”事件以来,它会自动调用方法apriRassegnePrecedenti。这次它会跳过if,因此它不会为View Controller进行分配以及何时调用:
[vecchieRassegne release];
......热潮。