0

我是 iOS 菜鸟。我在导航控制器中嵌入了一个表格视图。另一个表视图也嵌入在导航控制器中。第一个表视图 ChecklistsView 显示了第二个表视图 ItemDetailView。ChecklistView 的导航控制器“+”按钮打开 ItemDetailView 场景。点击 ItemDetailView 的 Cancel 按钮会关闭 ItemDetailView,但会显示上述消息。下面是 Cancel 方法的代码:

- (IBAction)cancel
{
    [self.delegate itemDetailViewControllerDidCancel:self];
}

这是取消方法中使用的委托方法:

- (void)itemDetailViewControllerDidCancel:(ItemDetailViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

任何建议,将不胜感激。我已经查看了有关此警告的其他帖子,但它们超出了我的专业水平。

4

2 回答 2

0

您不应该让委托解除 viewController。

相反,您应该通过使用 presentViewController 上的 .presentingViewController 属性来解除它。

像这样:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
于 2013-10-14T01:06:03.017 回答
0

我不同意 AdamG。你在做什么是正确的;Apple 也使用这种设计,委托解除控制器(查看MFMessageComposeViewController)。

回到问题,如果我理解正确,并且您具有以下结构(请原谅这些术语,但您会明白要点):

  • AUINavigationController在顶部
  • ChecklistsViewController是导航控制器的根视图控制器
  • ItemDetailViewController作为模态视图控制器
  • ChecklistsViewController是代表ItemDetailViewController

这只是您案例中的实施细节。

- (void) itemDetailViewControllerDidCancel: (ItemDetailViewController*) controller
{
    [controller dismissViewControllerAnimated: YES
                                   completion: nil];
}
于 2013-10-14T06:53:49.590 回答