【问题标题】:Three UIViewControllers on the same window同一个窗口上的三个 UIViewController
【发布时间】:2012-02-26 13:30:41
【问题描述】:

我想开发以下应用程序:顶部有一个导航栏,中间有一个 TableViewController,底部有一个自定义控件,实际上是一个滑块(当我移动滑块时,我想呈现另一个 TableViewController - 但我的导航栏保持不变)。当我在 TableView 中选择一个单元格时,我想推送一个新的 ViewController(所以我将更改我的导航栏)并且我还将关闭我的自定义控件。我附上了我的应用程序原型的图片。你建议我应该如何实现它?我的自定义控件是使用 IB 设计的,所以我认为我应该使用旧方法,使用 .xib 文件,而不是 Storyboard。

【问题讨论】:

    标签: iphone ios xcode uiviewcontroller


    【解决方案1】:

    您真的是指单独的视图控制器吗?你所描述的一切都可以用视图来处理,与所有最新版本的 iOS 兼容

    如果您真的希望屏幕的 3 个部分使用单独的视图控制器,您实际上只能在 iOS 5(或更高版本)下这样做。从 iOS 5 开始,视图控制器可以包含其他“子”视图控制器。您可以创建自己的容器视图控制器。

    查看方法 addChildViewController: 将视图控制器设置为当前视图控制器的子级。您首先添加所有子视图,然后将它们的内容视图添加为父视图控制器的子视图。

    在我看来,您想要一个导航控制器,它的根视图控制器是具有多个子视图控制器的容器视图控制器。如果要换出其中一个子视图,请使用 transitionFromViewController:toViewController:duration:options:animations:completion: 切换子视图控制器。

    【讨论】:

    • 我不确定是否需要单独的视图控制器。我知道我想使用我的 CustomControl(滑块)来换出中间的 TableView,当我按下 TableView 中的一个单元格时,我想推送一个新的 ViewController(所以我想更改我的导航栏,通过添加“返回键”)。所以你是说我可以使用 addChildViewController 为我的两个子视图(TableView 和我的 CustomControl)添加两个视图控制器?
    • 其实我想我想要一个导航控制器和一个表格视图控制器。因为我可以将我的导航控制器设置为我的 CustomControl(基本上是 UIControl 的子类)的委托。因此,当我按下 TableView 中的一个单元格时,我将执行推送,但是如何从中间交换 TableViewCotnroller 并仍然将我的 CustomControl 保持在我的窗口底部?
    • @Cosmin 你根本不需要交换你的表视图控制器。只需使用现有的表视图控制器并告诉表视图使用 [[self tableView] reloadData] 重新加载其数据。然后,让您的 UITableViewDataSource 从新的一天而不是旧的一天提供数据。
    • 是的,但是当我这样做时我想制作一个过渡效果。如果我只重新加载数据,这可能吗?
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多