iOS - 在一个TableViewController下有2个表视图和其他元素

时间:2012-03-07 19:49:52

标签: ios uiview uitableview

我正在尝试创建一个像这样的界面:

enter image description here enter image description here

但是我在XCode中遇到以下错误:Illegal Configuration: Static table views are only valid when embedded in UITableViewController instances

那个控制器是UITableViewController的子类,所以我真的不明白问题是什么,有什么见解?

3 个答案:

答案 0 :(得分:8)

首先,我认为你说ProfileViewController是UITableViewController的子类。如果是这种情况,顶级视图应该是UITableView而不仅仅是UIView。这个错误确实有意义。如果你想创建一个静态表视图,它需要嵌入在它自己的UITableViewController中,这是你将UITableViewController从Palette拖到故事板时得到的。

修改回答评论中的问题

所以从头开始。将TableViewController拖到故事板上并将类更改为ProfileViewController。这为您提供了原型单元格的tableview。然后将空视图拖到TableView顶部附近。这将为tableView添加一个headerview。 (每个tableview都有一个标题和页脚的子视图。这与节标题不同)。现在让标题视图更高并将其他元素拖入其中:segmentedButton,搜索字段。拖动您的UIImage视图。然后拖动另一个tableview并将其放在图像视图旁边。

现在创建一个NSObject NOT NSTableViewController的子类。

@interface MiniTableViewController : NSObject <UITableViewDelegate, UITableViewDataSource>

并将那个minitableview的数据源和委托方法放在那里。回到故事板上,将对象拖到层次结构中将类更改为MiniTableViewController,并将minitableview中的委托和数据源出口连接到层次结构中的MiniTableViewController。确保您使用助理视图。然后按住Ctrl键从MiniTableViewController对象拖动到ProfileViewController.h(在@end之前)并创建一个IBOutlet。现在,您可以从ProfileViewController访问新的自定义对象。如果需要MiniTableViewController将消息发送到ProfileViewController,您还可以在MiniTableViewController中创建一个IBOutlet并将其连接到ProfileViewController。

答案 1 :(得分:2)

UITableViewController只能有一个表视图。你有两个。你必须找到另一种方法来做到这一点。

答案 2 :(得分:0)

你在你的xib中放了一个UITableView吗? 如果是,您是否将此UITableView绑定到控制器?