我有一个带有4个标签的TabBar应用程序。所有四个选项卡都有导航控制器在设置选项卡中,我有一个表格,其中包含“反馈”单元格。单击单元格时,将推送一个FeedBackView控制器,其中包含一个包含几个字段的反馈表单。这有一个类别的文本字段。触摸文本字段时,会出现一个模态视图控制器(FeedBackModalView)和一个选择器。在FeedBackModalView控制器的viewDidLoad方法中,我输入NSLog(@"%@", self.parentViewController).
在控制台中,它将parentViewController显示为TabBar控制器。这是为什么?不应该将FeedBackView控制器显示为parentView,因为我在该控制器中呈现模态视图?
我希望我很清楚。
答案 0 :(得分:1)
将presentModalViewController
与UITabBarController一起使用有一些问题,我相信该方法的内部行为在最近的SDK版本中不断变化。底线是,您应该使用根视图控制器以模态方式呈现视图控制器。如果您使用标签栏界面,它将成为UITabBarController对象。
在旧版本的SDK中,当我在标签栏控制器内的视图控制器中呈现模态视图时,模态视图未以全屏显示,这不是预期的或记录的行为。现在,模式视图似乎在任何地方以全屏显示,如果[self presentModalViewController:animated:]
方法在内部检查self
并且它是否具有非零parentViewController
属性,我不会感到惊讶,发送消息到父视图控制器(将解释你的观察)。
我的记忆含糊不清,也许有人必须纠正我。但是,我仍然认为这是理解(也可能是练习)的简单方法presentModal...
仅适用于根视图控制器。