【问题标题】:"EXC_BAD_ACCESS" in switching to another view“EXC_BAD_ACCESS”在切换到另一个视图
【发布时间】:2011-03-22 14:25:00
【问题描述】:

我有带有按钮的 MainMenuViewController 是哪个动作

- (IBAction) goToFirstView { FirstViewController *fvc = [[FirstViewController alloc] init]; [self.view addSubview:fvc.view]; [fvc 发布]; }

FirstViewController 有带有动作的 UIButton

- (IBAction) 右箭头 { SecondViewController *svc = [[SecondViewController alloc] init]; [self.view addSubview:svc.view]; [svc 发布]; }

但是当我按下“rightArrow”按钮时,应用程序会因“EXC_BAD_ACCESS”而崩溃。找不到我的问题。请帮帮我。

【问题讨论】:

  • 不,我发现了问题,这是愚蠢的错误:)

标签: objective-c xcode ios exc-bad-access


【解决方案1】:
[svc 发布];

问题就在这里。释放视图控制器时,视图的事件将针对已释放的对象,并使您的程序崩溃(可能在 viewDidLoad 或 viewDidAppear 中,如果它是即时的,但没关系)。请注意,视图不会(通常,AFAIK)保留它的视图控制器,如果这可能是您的假设...

【讨论】:

    【解决方案2】:

    当您说[self.view addSubview:svc.view] 时,您是在将 SecondViewController 的视图添加到 FirstViewController 的视图中。与 MainViewController 和 FirstViewController 类似。你最终会得到一个看起来像这样的视图层次结构:

    • 主视图
      • 第一个视图
        • 第二个视图

    我怀疑这真的是你想要的。相反,使用带有 MainViewController 的导航控制器作为导航控制器的根控制器,然后使用 -pushViewController:animated: 将控制器(不是视图!)推送到导航堆栈上。

    【讨论】:

    • 是的,很好的评论。导航控制器会是更好的方法
    • 是的,当然,UINavigationController 更好,但是 UINavCon 不需要我
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多