如何在表格视图中显示导航控制器?

时间:2016-04-05 07:35:23

标签: ios

这可能听起来像一个奇怪的请求,但我正试图找到一种方法来显示导航控制器(带有导航栏,可以从堆栈中推送和弹出控制器),它显示在表格视图的中间并使用表格视图滚动。我怎样才能实现这个功能?

1 个答案:

答案 0 :(得分:2)

当我阅读你的问题时,我有兴趣构建一个演示服务器。我试图使用嵌入导航控制器的容器,但不幸的是它没有工作,因为你不能在正常UITableView的重复内容中使用容器。所以我使用UITableViewController来使用静态单元格,并且我设法嵌入了导航控制器:

http://recordit.co/EsvsyWhcLX

故事板看起来像这样: Storyboard

方法#2,如果您想将UITableView与原型单元格一起使用:

http://recordit.co/d3yhbuJ4Ww

您可以在单元格中创建自定义单元格,然后实例化导航控制器并将其视图添加为子视图:

Using UITableView

并在CustomTableViewCell.swift类中执行以下操作:

class CustomTableViewCell: UITableViewCell {

var navIsAdded = false // boolean used to make sure that nav view controller is added and will not be added again
var currentNavigationController : UINavigationController! // retain the controller so that push/pop works, if you didn't retain it like this, the view will be added but no push or pop will work


func setupNavVC(){
    if navIsAdded{
        return
    }
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    self.currentNavigationController = storyboard.instantiateViewControllerWithIdentifier("navVC") as! UINavigationController

    let view = self.currentNavigationController.view
    var frame = view.frame
    frame.size = self.frame.size
    view.frame = frame
    self.contentView.addSubview(view)
    navIsAdded = true
}

override func layoutSubviews() {
    setupNavVC()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}