UIViewController中的静态表视图[Xcode 5]

Con*_*cob 26 xcode objective-c

我知道一个人无法在UIViewController中拥有静态表视图内容的问题

我没有得到警告/错误,但他也没有编译.是否有诀窍或我是否必须使用旧方法?

提前致谢.

Can*_*ğlu 33

更新:使用最新的更新(Xcode 5.1)似乎不再可能将静态单元格放在常规UIViewController中.我的答案仍然适用于UITableViewController.


是的,您可以在UIViewController中拥有静态表视图内容.

你需要做的就是:

- 在界面构建器中创建表的静态单元格,并按照您喜欢的方式进行设计.

- 使UIViewController实现表视图的数据源和委托:

@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

- 将表视图的委托和dataSource连接到界面构建器中的视图控制器

- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section实现返回您的单元格数量.(例如return 10,这很简单)

- 在Interface Builder中将单元格作为IBOutlets连接到代码.重要提示:确保它们是strong弱的,不起作用.例如@property (strong, nonatomic) IBOutlet UITableViewCell *myFirstCell;

- 实现-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath在索引路径返回正确的单元格.例如:

int num = indexPath.row;
UITableViewCell *cell;
switch (num) {
    case 0:
        cell = self.myFirstCell;
        break;
    case 1:
        cell = self.mySecondCell;
        break;
}
return cell;
Run Code Online (Sandbox Code Playgroud)

如果您应用所有这些步骤,则应该使用适用于没有多个单元格的表的静态单元格.适合您拥有少量(可能不超过10-20就足够)内容的表格.我几天前跑了同样的问题,我确认它有效.关于我的答案的更多信息:将静态TableView-Cells添加到UIViewcontroller的最佳方法?

  • 有一个解决方法,但它有点脏.将UIViewController拖到Storyboard中.在控制器内拖动一个CONTAINER VIEW,你想要你的STATIC表.删除Segue并查看为您创建的容器视图.将UITableViewControler拖到场景上,将其设置为STATIC单元格,然后按CTRL +从CONTAINER VIEW单击到UITableViewController并选择EMBED.Tadaaaaa!肮脏但漂亮. (2认同)

Dan*_*e P 15

有一种方法可以改善Can的答案.

将您的单元格连接到代码而不是IBOutletIBOutletCollection.如果您将其命名为例如单元格,则代码将如下所示,这使其更加清晰:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.cells.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return self.cells[indexPath.row];
}
Run Code Online (Sandbox Code Playgroud)

将单元格连接到插座集合的顺序将是您在运行应用程序时看到的顺序.

我可以考虑通过将他们的单元格连接到几个插座集合来支持几个部分.

  • 更好的解决方案 (2认同)