segue.destinationviewcontroller不是为什么期待?

时间:2016-02-03 15:29:51

标签: ios objective-c segue

我尝试在我的项目中创建一个segue,segue工作正常,但是当我尝试设置某些属性的值时,它给了我一个错误。

unrecognised selector sent to instance 0x13fe42550

经过一些调试后我发现了

segue.destinationViewController

UIViewController而不是我自己的控制器类(MyClass

我尝试了以下内容:

if ([segue.destinationViewController isKindOfClass:[MyClass class]]) {
    MyClass *mainViewConroller = segue.destinationViewController;
    NSInteger tagIndex = [(UILabel *)sender tag];
    mainViewConroller.id = @"65";
}

但是,它没有返回在IB的类部分中设置的预期类名的实例。

enter image description here

4 个答案:

答案 0 :(得分:2)

区分多个segue的常用方法是标识符

if ([segue.identifier isEqualToString:@"reviewDetail"]) {
    MyClass *mainViewController = (MyClass *)segue.destinationViewController;
    NSInteger tagIndex = [(UILabel *)sender tag];
    mainViewController.id = @"65";
}

答案 1 :(得分:0)

segue.destinationViewController实际上可能是你的类 - 你应该首先使用标识符标记segue。其次,检查标识符是否正确。第三,将segue.destinationViewController转换为您的类:

MyClass *vc = (MyClass *)segue.destinationViewController

然后你可以传递你想要的所有信息。

答案 2 :(得分:0)

问题在于,UIStoryboardSegue中的类属性允许您为该segue设置类,这样您就可以自定义转换并执行一些奇特的操作。

如果您想为视图控制器创建一个新类,则必须将其设置为segue箭头末尾的视图控制器。

答案 3 :(得分:0)

尽管为目标视图控制器设置了自定义类,但我遇到了同样的问题。问题是我设置了“模块”。我花了几个小时试图找出问题所在,但我做到了。我看到我的第一个视图控制器在该字段中没有任何内容。一旦我在目标控制器上删除了该值,问题就得到解决。