如何在Interface Builder中将导航栏添加到UITableViewController?

界面生成器不让我点击并拖动到一个表视图控制器的导航栏! 这是非常令人沮丧的。

我只想要一个带有编辑button的表格视图(在interface-builder中完成)。 如果这是不可能的,那我该如何添加一个navbar编程?

提前致谢。

从大纲视图中,确保您的表视图控制器被选中。

然后进入Editor菜单,点击Embed In子菜单,selectNavigation Controller ,然后select。 你有你的导航控制器指向你的tableview控制器内置的关系。

对于顶部带有编辑button的表格视图,使用UINavigationController,以UITableView作为rootView。 这意味着您将为您的表视图创build一个自定义UITableView子类,并将其用作您的UINavigationController实例的rootView。 (在编程方面,它是用UINavigationController的-(id)initWithRootViewController的,也可以通过IB设置。)

然后,在您的UITableView子类中,取消注释以下行:

 - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. self.navigationItem.rightBarButtonItem = self.editButtonItem; } 

和voilà,你的UINavigationController视图显示为一个表格视图,在导航栏的右侧有一个编辑button。

由于控制器位于堆栈顶部,因此左侧没有“返回”button,因此您可以使用self.navigationItem.leftBarButtonItem来创build您创build的任何UIBarButtonItem。

我同意很难弄清楚如何在界面生成器中做这样的事情,但幸运的是可以通过这种方式添加一个导航栏和栏button项。 以下是如何做到这一点:

  1. 将一个空白的View(UIView的一个实例)从库中拖到Table View顶部附近的区域。 在目标区域附近拖动时,Interface Builder将以蓝色高亮显示,以显示放置视图的位置。 放开,视图将被添加为表视图的标题视图的子视图。
  2. 将一个导航栏从库中拖放到刚刚添加的空白视图上。
  3. 从库中拖出一个栏button项并将其放到导航栏上。

编辑

上述方法的问题在于,正如Bogatyr指出的那样,导航栏随后将与表格视图一起滚动。 Applebuild议使用UIViewController的自定义子类,该子类同时拥有导航栏和resize的UITableView实例。 不幸的是,这意味着你将不得不自己实现UIViewController子类所需的UITableViewController行为。

另一种似乎很好的方法是创build一个UIViewController的自定义子类,它拥有一个包含导航栏的空白背景视图以及一个适合导航栏的空白内容视图( UIView一个实例)。 您的自定义子类将有一个出口指向同一个nib文件中的UITableViewController实例。

这具有允许所有视图组件在Interface Builder中被创build和configuration的优点,并且不需要从头开始实施UITableViewController方法。 在Table View Controller的父项中需要关注的唯一细节是将Table View添加为viewDidLoad父级内容视图的子视图。

父母可以实现导航栏button项的操作方法,并根据需要实现委托模式。

从iOS6开始,您可以使用容器视图。 所以你需要做的是采取视图控制器,添加导航栏,然后添加一个容器视图到相同的视图控制器。 它会自动将新的视图控制器链接添加到您的容器视图。 现在简单地删除它,并在故事板中的表格视图控制器。 现在通过控制拖动将表格视图控制器embedded容器视图。 希望能帮助到你。

首先添加一个导航控制器,并将表视图控制器(作为根视图控制器)放到导航控制器上。 这是Code在CodeGo.net,因为我不使用IB。

为什么在这个世界上,你不能将一个导航项拖到一个.xib文件中,并且将文件的所有者设置为UIViewController的一个子类,并且将导航项挂到UIViewController的导航项上。 这似乎是IB / XCode集成中的一个真正的漏洞。 因为你当然可以将一个ViewController的实例拖到一个xib文件中,并将一个navigationItem拖到ViewController中,然后设置标题和barbuttonitems。

所以,如果你想在IB中定义你的UITableViewController子类对象的导航条,你必须在xib文件(不是包含你的UITableViewController的tableview的.xib文件)中创build你的TableVC对象。 然后,您或者将TableVC对象挂接到另一个对象(如应用程序委托)的出口,如果在应用程序的整个生命周期中只需要TVC的一个实例,或者如果要dynamic创build在代码中的TableVC通过loadNibNamed:owner:NSBundle类的options方法手动加载这个额外的.xib文件。

这些步骤在iOS 9中适用于我:

  1. 添加视图控制器到故事板。 使UITableViewController作为基类。
  2. 将导航栏对象添加到顶部的视图控制器上。
  3. 在导航栏下方添加一个表格视图。
  4. 将表格视图单元格添加到表格视图中。
  5. 添加约束。
Interesting Posts