UITableViewController和子视图

时间:2012-07-24 10:48:42

标签: iphone objective-c ios cocoa-touch uitableview

我有一个屏幕,我想显示某些产品的详细信息。我正在使用故事板。

我使用带静态单元格的tableview完成了这项工作,但静态单元格只能在UITableViewController的tableview中完成。问题是我还希望在这个控制器中有一个Imageview。这是不可能的,因为UITableViewController的tableview占用了所有的屏幕大小。

所以我将Imageview作为tableview的子视图。

我想知道它是否是正确的方法,stackoverflow上有类似的问题,但没有一个与我的用例相对应(storyboard + tableviewcontroller + staticcell + sub view)

3 个答案:

答案 0 :(得分:1)

您可以拥有UITableViewController的子类。初始化之后,将其视图(tableView)并将其作为子视图添加到其他视图控制器。这样,您可以将tableView的框架设置为占据(顶部包含)视图控制器的底部。对于同一个视图控制器,您可以添加其他子视图,如UIImageView,并将其放在顶部。您遇到的唯一问题可能与缺少UITableViewController子类的通知有关(viewWillDisappear,viewDidDissappear,viewWillAppear,viewDidAppear,...)。但是您可以从顶视图控制器转发它们。或者您可以使用iOS 5中的方法将UITableViewController的子类添加为子视图控制器并根据需要进行定位。但是,如果您计划使用iOS 5.0 +支持设备,这将非常有用。

请参阅UIViewController中的方法文档:

- (void)addChildViewController:(UIViewController *)childController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);

答案 1 :(得分:1)

无需编写任何自定义代码,您可以:

  1. 将UIImageView放在表格视图的页眉或页脚视图中。
  2. 创建一个静态单元格并将UIImageView放入其中。表格单元格不必是均匀长度,如果需要,可以使其高于其他单元格。

答案 2 :(得分:0)

  • 使用UITableView作为viewController的属性并将其添加到vc.view,而不是子类化UITableViewController,然后根据需要设置其框架
  • 将imageView添加到vc。例如,如果您需要将它放在UITableView的顶部,请将其添加为TableView的标题。