【问题标题】:UITableViewController and sub viewsUITableViewController 和子视图
【发布时间】:2012-07-24 10:48:42
【问题描述】:

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

我已经使用带有静态单元格的表格视图来完成此操作,但静态单元格只能在 UITableViewController 的表格视图中完成。问题在于我还想在这个控制器中有一个 Imageview。这是不可能的,因为 UITableViewController 的 tableview 占据了所有的屏幕尺寸。

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

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

【问题讨论】:

  • 子视图方法可以,或者使用自定义单元格

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


【解决方案1】:

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

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

【讨论】:

  • 使用选项 2,如果我对单元格进行了分组,就不可能让图像视图静态单元格占据所有屏幕宽度?因为其他部分将有一个“边距”
  • @tahir 如果您使用分组表格样式,那么页眉/页脚选项可能会更好看。如果要匹配背景,可以使用通用的UIView作为容器,设置背景颜色为[UIColor groupTableViewBackgroundColor]
【解决方案2】:

您可以拥有 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);

【讨论】:

    【解决方案3】:
    • 使用 UITableView 作为 viewController 的属性并将其添加到 vc.view,而不是子类化 UITableViewController,然后根据需要设置其框架
    • 将 imageView 添加到 vc.如果需要放在 UITableView 之上,比如作为 TableView 的头部添加。

    【讨论】:

    • 它不允许我为 tableview 做静态单元格,为此,我必须有一个 UITableViewController(或它的子类)
    • 如果没有办法(或者如果对您的情况有更多了解,还有其他选择),那么我可能会建议这样:例如,如果您只有一个部分,那么在 @987654321 @return 2,但是除了imageview作为section0的header之外,不要在section0中放任何单元格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多