【问题标题】:[UITabBarController setPassedData:]: unrecognized selector sent to instance[UITabBarController setPassedData:]:无法识别的选择器发送到实例
【发布时间】:2013-05-31 11:07:45
【问题描述】:

我将在下面给出程序的概要,但是当推动一个新的视图控制器(不是标签栏视图)时,我在步进器上选择一个值,然后单击一个按钮返回。我正在尝试将步进值从 FilterViewController 发送到 FirstViewController。

程序:

应用程序在FirstViewController 上加载,这是标签栏控制器的第一个标签,屏幕左上方是一个打开 FilterViewController 的按钮(放大镜)。

FilterViewController 有一个步进器、一个标签(显示步进器的值)和一个按钮。单击按钮,它将步进器的值保存到变量中,我需要将其传递给 FirstViewController。

FirstViewController.h(我从 FilterViewController 访问的属性)

@interface FirstViewController : UIViewController
{
    NSString *passedData;
}

@property(nonatomic, retain) NSString *passedData;

FirstViewController.m(推送新视图控制器的代码,该属性也在实现中合成)

- (IBAction)searchOptions:(id)sender {
    FilterViewController *ctrl = [[FilterViewController alloc] init];
    [UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];

    self.filterViewController = ctrl;

    [self.navigationController pushViewController:self.filterViewController animated:NO];

}

FilterViewController.m(保存值并将其传递给 FirstViewController 的代码)

- (IBAction)backToMap:(id)sender {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    FirstViewController *fvc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarController"];
    fvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    self.firstViewData = fvc;

    fvc.passedData = @"yo";

    //firstViewData.passedData = @"hello test test test";

    [self presentViewController:fvc animated:YES completion:nil];
}

当它执行这个时它崩溃说:[UITabBarController setPassedData:]: unrecognized selector sent to instance

【问题讨论】:

  • fvc 是 UITabBarController,而不是 FirstViewController。
  • 我是这样设置的,因为当我刚刚进行正常转换时出现黑屏,所以我这样做了

标签: ios objective-c cocoa-touch


【解决方案1】:

假设您的意思是崩溃发生在您的代码的以下行

    fvc.passedData = @"yo";

您可能想检查 fvc 确实是 FirstViewController NSLog("%@", fvc);,即 IB 中的类是否从 UIViewController 更改为 FirstViewController ?

【讨论】:

  • 嘿,我认为崩溃必须发生在那条线上。执行 NSLog 时,IDE 中会出现错误提示 Implicit conversion of a non-objective-c pointer type 'char *' to type 'NSString *' is disallowed with ARC
  • 在 IB 中再次检查您有一个“MainStoryboard”;并检查“TabBarController”确实属于“FirstViewController”类。
  • @Dirk-WillemvanGulik 该类显然是错误的 - 只需查看异常消息,它指出它是 UITabBarController
  • 嘿 - 帮助钓鱼比抓鱼和炸鱼更好:)
  • @Dirk-WillemvanGulik 我的标签栏控制器有类 TabBarController 然后孩子(不同的标签)有像 FirstViewController 等类,对吗? xib 是 MainStoryboard.storyboard
【解决方案2】:

查看您的代码。您将 TabBarController 作为 FirstViewController 的标识符。可能是你弄错了

FirstViewController *fvc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarController"]; // Here check the identifier
fvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

self.firstViewData = fvc;

【讨论】:

  • 啊但是,现在我的 UIToolbar 消失了
猜你喜欢
  • 1970-01-01
  • 2019-08-28
  • 2012-07-24
相关资源
最近更新 更多