我尝试在我的项目中创建一个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的类部分中设置的预期类名的实例。
答案 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)
尽管为目标视图控制器设置了自定义类,但我遇到了同样的问题。问题是我设置了“模块”。我花了几个小时试图找出问题所在,但我做到了。我看到我的第一个视图控制器在该字段中没有任何内容。一旦我在目标控制器上删除了该值,问题就得到解决。