以两种方式显示视图(推送和模态)

时间:2012-10-26 20:15:41

标签: objective-c ios uinavigationcontroller uinavigationbar uistoryboardsegue

我正在使用故事板。我有一个UINavigationControllerUITableViewControllerrootViewController。在此表视图中,用户可以通过两种方式访问​​DetailViewController(自定义UIViewController子类):

  1. 点按表格单元格以查看其信息
  2. 点按加号按钮以创建新项目
  3. 对于方式1,我希望推动我的segue。对于方式2,我希望以模态方式显示细节。

    起初我认为这不应该太难,但我反对一些麻烦。造成这种麻烦的原因是:导航栏。按下下一个视图时,导航栏就在那里。但是,当以模态方式显示下一个视图时,导航栏不在那里。

    我知道Apple已经考虑过这个,这是最合乎逻辑的方法,但我需要在模态视图中使用导航栏再次关闭模态视图(使用取消和完成按钮)。通过界面构建​​器添加此导航栏不会带来好运:对于模态显示的视图,它工作正常,但在我推动的视图中,我突然有两个导航栏。

    对此的逻辑解决方案是以编程方式添加导航栏,如果视图以模态方式显示,则仅 。我做了这个,导航栏显示,但它与视图重叠。我尝试调整视图大小,使其与正在推送的视图大小相同,但我没有设法解决问题:导航栏仍然与视图重叠。

    我在这一点上停止尝试有两个原因:我不知道该尝试什么,我觉得应该有一个更简单的方法,因为我可能不是唯一一个试图实现这一目标的人。

    任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用详细视图控制器作为其根视图控制器创建另一个导航控制器。然后使用主视图控制器作为演示者以模态方式呈现新的导航控制器。