jma*_*mac 2 iphone uiviewcontroller
我的应用程序中有一个显示UITableView的视图.此视图在nib文件中创建,并具有自定义视图控制器.此视图的UIViewController子类充当UITableView的数据源和委托.
我的UITableView根据我的数据显示几行.然后,最后一行显示不同的文本:"添加另一个...".如果选择了最后一行,我会提供一个模态视图控制器(允许用户添加更多数据).当我关闭模态视图控制器时,我再次看到原始视图(如预期的那样)并且看起来都很好.但是,当我尝试与此视图进行交互时,应用程序崩溃了.
从通过UIViewController(对于UITableView)放置几个NSLog()语句,我已经确定在模式视图被解除后正在调用-dealloc方法.这解释了当我尝试使用该视图执行某些操作时的崩溃.但是,我不知道为什么在这个视图控制器上调用-dealloc.
要解雇模态视图控制器,我有:
[self dismissModalViewController:YES];
Run Code Online (Sandbox Code Playgroud)
作为模态视图控制器的UIViewController中的IBAction方法中的代码.此操作与相应nib文件中的取消按钮相关联.
另外,我对View Controller Programming Guide的理解是,可以从内部解除模态控制器,但使用委托更加健壮.我最初使用的是委托,但是委托代理来简化调试.我只是让代理重新进行仔细检查,使用委托时会出现相同的行为.模态控制器的动作方法调用实现为:
[[self delegate] myModalViewController:self didAddObject:obj];
Run Code Online (Sandbox Code Playgroud)
父视图控制器中的委托实现是:
[self dismissModalViewController:YES]
Run Code Online (Sandbox Code Playgroud)
如果有人之前已经看过这个,或者对可能发生的事情有什么建议或如何调试这个,我将不胜感激.
如果-dealloc
正在调用,则会释放视图控制器.尝试-release
在视图控制器中实现:
-(void)release {
NSLog(@"view controller released");
[super release];
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以使用调试器在发生此意外释放消息时检查调用堆栈.
归档时间: |
|
查看次数: |
3748 次 |
最近记录: |