界面构建器不允许我单击并将导航栏拖动到表视图控制器上!这太令人沮丧了。
我想要的只是一个带有编辑按钮的表视图(在interface-builder中完成)。如果这不可能,那么如何以编程方式添加导航栏?
提前致谢。
答案 0 :(得分:48)
在大纲视图中,确保选中表格视图控制器。
然后转到编辑器菜单,然后单击嵌入子菜单,选择导航控制器,然后选择。您的导航控制器指向您的tableview控制器,内置关系。
答案 1 :(得分:17)
对于顶部带有编辑按钮的表格视图,使用UINavigationController,UITableView作为rootView。这意味着您将为表视图创建一个自定义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视图显示为一个表格视图,导航栏右侧有一个编辑按钮。
由于控制器位于堆栈的顶部,左侧没有“后退”按钮,因此您可以将self.navigationItem.leftBarButtonItem
用于您创建的任何UIBarButtonItem。
答案 2 :(得分:12)
我同意在Interface Builder中很难弄清楚如何做这样的事情,但幸运的是,可以通过这种方式将导航栏和条形按钮项添加到表格视图中。这是如何做到的:
修改强>
上述方法的问题在于,正如Bogatyr指出的那样,导航栏将随表视图一起滚动。 Apple建议使用UIViewController
的自定义子类,该子类拥有导航栏和调整大小UITableView
的实例以适应。不幸的是,这意味着您必须自己实现UITableViewController
子类所需的UIViewController
行为。
另一种似乎运行良好的方法是创建UIViewController
的自定义子类,该子类拥有包含导航栏的空白背景视图以及空白内容视图(UIView
的实例)适合导航栏。您的自定义子类将在同一个nib文件中指向UITableViewController
的实例。
这样做的好处是允许在Interface Builder中创建和配置所有视图组件,并且不需要从头开始实现UITableViewController
方法。您需要在Table View Controller的父级中处理的唯一细节是将Table View添加为viewDidLoad
中父级内容视图的子视图。
父级可以实现导航栏按钮项的操作方法,并在必要时实现委托模式。
答案 3 :(得分:9)
从iOS6开始,您可以使用容器视图。因此,您需要做的是使用View控制器,向其添加导航栏,然后将Container View添加到同一个视图控制器。它会自动将新的视图控制器链接添加到容器视图中。现在只需删除故事板中的那个,以及您的表视图控制器。现在通过控制拖动将表视图控制器嵌入到容器视图中。希望它有所帮助。
答案 4 :(得分:4)
首先添加导航控制器并将表视图控制器(作为根视图控制器)放到导航控制器上。这是在Code中完成的,因为我没有使用IB。
答案 5 :(得分:3)
为什么世界上你不能将一个navigationItem拖到一个.xib文件中,文件的所有者设置为UIViewController的子类,并将navigationItem挂钩到UIViewController的navigationItem出口超出我的范围。这似乎是IB / XCode集成中的一个真正漏洞。因为您当然可以将ViewController的实例拖到xib文件中,并将navigationItem拖到ViewController中,然后以这种方式设置title和barbuttonitems。
因此,如果要在IB中定义UITableViewController子类对象的导航栏,则必须在xib文件中创建TableVC对象(不是包含UITableViewController的tableview的.xib文件!)。然后,您可以将TableVC对象挂钩作为另一个对象(如应用程序委托)的出口,如果您在应用程序的整个生命周期中只需要一个TVC实例,或者如果要动态创建TableVC在代码中通过NSBundle类的loadNibNamed:owner:options方法手动加载这个额外的.xib文件。
答案 6 :(得分:1)
这些步骤适用于iOS 9:
答案 7 :(得分:-2)
这是另一种简单方式;
您可以轻松添加导航栏。