我是iOS新秀。我有一个嵌入在导航控制器中的表视图。另一个表视图也嵌入在导航控制器中。第一个表视图ChecklistsView显示第二个表视图ItemDetailView。 ChecklistView的导航控制器'+'按钮打开ItemDetailView场景。点击ItemDetailView的Cancel按钮可关闭ItemDetailView,但会显示上面提到的消息。以下是Cancel方法的代码:
- (IBAction)cancel
{
[self.delegate itemDetailViewControllerDidCancel:self];
}
这是取消方法中使用的委托方法:
- (void)itemDetailViewControllerDidCancel:(ItemDetailViewController *)controller
{
[self dismissViewControllerAnimated:YES completion:nil];
}
任何建议将不胜感激。我已经查看了有关此警告的其他帖子,但它们高于我的专业水平。
答案 0 :(得分:0)
你不应该让委托解雇viewController。
相反,您应该使用presentViewController上的.presentingViewController属性来解除它。
像这样:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
答案 1 :(得分:0)
我不同意AdamG。你正在做的是正确的; Apple也使用这种设计,代表解散控制器(查看MFMessageComposeViewController)。
回到问题,如果我理解正确,并且你有以下结构(原谅这些条款,但你会得到主旨):
UINavigationController
ChecklistsViewController
是导航控制器的根视图控制器ItemDetailViewController
作为模态视图控制器ChecklistsViewController
是ItemDetailViewController
这只是您案例中的实施细节。
- (void) itemDetailViewControllerDidCancel: (ItemDetailViewController*) controller
{
[controller dismissViewControllerAnimated: YES
completion: nil];
}