我有MainMenuViewController的按钮,其动作是
- (IBAction) goToFirstView { FirstViewController *fvc = [[FirstViewController alloc] init]; [self.view addSubview:fvc.view]; [fvc release]; }
FirstViewController有UIButton with action
- (IBAction) rightArrow { SecondViewController *svc = [[SecondViewController alloc] init]; [self.view addSubview:svc.view]; [svc release]; }
但是当我按下“rightArrow”按钮时,应用程序崩溃了“EXC_BAD_ACCESS”。找不到我的问题。请帮帮我。
答案 0 :(得分:4)
[svc release];
问题出在这里。释放视图控制器时,视图的事件将以释放的对象为目标,并使程序崩溃(如果它是即时的,可能在viewDidLoad或viewDidAppear中,但无关紧要)。请注意,视图不会(通常是AFAIK)保留它的视图控制器,如果这可能是您的假设......
答案 1 :(得分:1)
当你说[self.view addSubview:svc.view]
时,你将SecondViewController的视图添加到FirstViewController的视图中。与MainViewController和FirstViewController类似。你最终得到的是一个看起来像这样的视图层次结构:
我怀疑这真的是你想要的。相反,使用导航控制器和MainViewController作为导航控制器的根控制器,然后使用-pushViewController:animated:将控制器(而不是视图!)推送到导航堆栈。