从xcode storyboard中可视化地修改UIToolbar

我正在使用XCode 4和故事板创build的应用程序,但是我无法直观地修改UIToolbar。

我试图修改一个UIToolView里面的UITableViewController – 但是我必须把UIToolbar放在正确的层次结构,以便能够直观地修改它。 我已经尝试将其放置在视图控制器区域,但没有显示出来。

有一次,我能够使它出现在下面,因为它是自己的对象,但是我不能重新创build它。

问题

一旦我能够看起来像这样 问题

你的UITableViewController是在一个UINavigationController里面的,它已经有了自己的UIToolbar你不需要在你的视图层次结构中拖动一个新的。 界面生成器可以在检查器面板的“模拟度量标准”下模拟您的工具栏。

一旦模拟的工具栏可见,只需拖动UIBarButtonItem就可以了。 如果您需要比button或间隔符更复杂的任何东西,请使用具有自定义视图的自定义项目。

如果您需要您的工具栏项目需要dynamic,您可以通过IBOutlet维护一个引用,而不必在您的视图中。 然后在运行时设置你的UITableViewControllertoolbarItems属性或调用-setToolbarItems:animated:显示适当的项目。

请参阅Apple的UINavigationController类参考:显示工具栏 。

为了回答你的问题,可视化编辑器简化了大多数控件,视图层次结构和委托模式的设置,但是开发人员还是要确保他们签出。 UITableViewController的实现对Xcode没有通过可视化编辑器强制实现的视图层次结构做了一定的假设和断言。 鉴于您所需的视图层次结构不受支持,我必须假定编辑器的行为是未定义的或不相关的。 有关解决方法,请参阅Maxner的build议。

UITableViewControllers只允许一个视图对象,这当然是UITableView。 UITableViews是不合作的子视图,他们通常推入一切页脚或标题。 像这样的东西是不可能的:

 -TableController -Table -Subview -Another subview 

UITableViewControllers简化为:

 -TableViewController -Table 

所以你将需要使用UIViewController并在那里声明一个UITableView。 下面是你应该使用的层次结构:

 - ViewController <Table's Delegate & Data Source> - View -Table - Your UIToolbar 

在您的ViewController.h声明IBOutlet UITableView和连接数据源和委托到ViewController。 然后,只需将UITableView实现添加到.m文件中,您就可以轻松完成任务。