2016-02-03 56 views
-2

我试着在我的项目中创建一个segue,segue工作的很完美,但是当我尝试设置一些属性的值时,它给了我一个错误。segue.destinationviewcontroller不是什么期待为什么?

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

+0

是什么ID在mainViewController?一个字符串或数字? –

+0

我建议你不要使用名称id,因为它与数据类型ID冲突。使用不同的变量名称。 –

+0

另外你还没有使用变量tagIndex。它有什么用处? –

回答

2

的常用方法来区分多个塞格斯是标识符

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

得到了我的问题。我忘了为第二个视图控制器设置控制器类。 –

0

segue.destinationViewController实际上可能是你的分类 - 你应该先用标记的标识符SEGUE。其次,检查标识符是否正确。三,施放segue.destinationViewController你的课,因为这样的:

MyClass *vc = (MyClass *)segue.destinationViewController

然后你就可以通过所有你想要的信息。

+2

铸造只是给编译器提供信息,它不会改变您的控制器在运行时的类别 – dan

+0

@AMayes我做了所有这些。 请检查附加的图像,它不会给我选择类的选项。 这是问题吗? –

+1

@RatneshKumar赛格应该是'UistoryboardSegue'。不要改变那个班级。 – vadian

0

问题在于,UIStoryboardSegue中的类属性允许您为该segue设置类,这样您就可以自定义过渡并做一些奇特的事情。

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