在prepareForSegue期间,当尝试为属性赋值时,获取[UIViewController <null selector =“”>]?</null>

时间:2012-05-09 22:18:02

标签: objective-c ios exception segue

在prepareForSegue期间,我尝试为属性赋值并获取错误

  

2012-05-09 23:14:22.122 LeakSpotter [17709:15b03] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [UIViewController setCoordLong:]:无法识别的选择器已发送例如0xa86e930'

头:

@property (nonatomic, retain) NSString *CoordLong;
@property (nonatomic, retain) NSString *CoordLat;

它们是合成的。

  

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSLog(@"Fired segue %@", [segue identifier]);
if([[segue identifier] isEqualToString:@"returnToLeakSpotter"]){
    NSLog(@"Return to leak spotter segue...");
    //ContactsViewController *cvc = (ContactsViewController *)[segue destinationViewController];

}else if ([[segue identifier] isEqualToString:@"gotoTakePhoto"]) {
    NSLog(@"Go to photo view");
    takePhotoViewController *takePhotoC = [segue destinationViewController];

    takePhotoC.CoordLong = @"-9.88";
    takePhotoC.CoordLat = @"45.45";

我错过了一些明显的东西吗?

由于

2 个答案:

答案 0 :(得分:4)

看起来你没有在故事板中的takePhotoViewController上设置视图控制器子类,所以它实例化了一个基本的UIViewController(如错误中所示),它不知道CoordLat是什么。

顺便说一句,按照惯例,类名以大写字母开头,变量/属性以小写字母开头,你似乎反过来了。

答案 1 :(得分:0)

您可能需要转换viewController,因为destinationViewController默认返回UIViewController。

takePhotoViewController *takePhotoC = (takePhotoViewController *)[segue destinationViewController];