发送无法识别的选择器

时间:2014-03-25 14:43:30

标签: ios objective-c uiviewcontroller uitabbarcontroller

我有1个View Controller和1个Tab Bar Controller Controller和2个Navegation Controller。

在我的简单视图中,我有一个表单,然后当我点击按钮"登录"我想在我的标签栏控制器中加载第一个视图。

这段代码完美无缺:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    Inicial *telaInicial = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"];
    [self presentViewController:telaInicial animated:YES completion:nil];

但我想发送和重视这个观点" Inicial"我说这个:

telaInicial.email = email.text;

但我收到此错误消息:

***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [UITabBarController setEmail:]:无法识别的选择器发送到实例0x9fdc8f0'

enter image description here

3 个答案:

答案 0 :(得分:3)

您认为telaInicial的实例的对象Inicial实际上是UITabBarController,因此您无法在其上设置email属性,因为它不存在。

我想你想要这样的东西......

UITabBarController *tabBarController = [self.storyboard instantiateViewControllerWithIdentifier:@"tabBar"];

UINavigationController *navController = tabBarController.viewControllers[0];

Inicial *telaInicial = navController.topViewController;

telaInicial.email = // blah

答案 1 :(得分:0)

这意味着telaInicial对象没有setEmail方法。这是您编写的子类的实例吗?如果是这样,您可能会收到错误,因为您还没有为它编写setEmail方法,或者因为您还没有将实例变量email声明为@property,在这种情况下,它的setter和getter方法将由XCode自动合成(在XCode 4.something之前,我认为您需要明确地合成您的属性 - 在该版本之后,它们是自动的)。

答案 2 :(得分:0)

尝试编写将存储数据的类。 你可以从AppDelegate访问它(不是很好的解决方案,但非常快)。