iOS:从现有单元格以编程方式创建表“标题”

Posted

技术标签:

【中文标题】iOS:从现有单元格以编程方式创建表“标题”【英文标题】:iOS: create table "header" programmatically from existing cell 【发布时间】:2014-09-05 20:35:24 【问题描述】:

我的 tableOne 包含名为 CustomCellForTableOne(.h 和 .m)的自定义 UITableViewCell。当用户单击 tableOne 中的单元格时,我希望他们继续使用 tableTwo。到目前为止很容易。

我希望 tableOne 中的单元格成为 tableTwo 中的表头。有没有一种简单直接的方法来做到这一点?理想情况下,我想从通过 segue 传递的数据简单地创建一个 CustomCellForTableOne 并将该单元格分配为我的 tableTwo 的标题。

    我不知道如何以编程方式将表头分配给表(所以我可以试试) 它会起作用吗? (因为我还没有尝试过,我想我可能会要求节省一些时间)或者我必须采取一些不同的方法吗?

【问题讨论】:

感谢大家的精彩回答:+1。我将根据哪一个最适合我来实施和报告。非常感谢大家的帮助。 【参考方案1】:

应该可以作为表格的单元格和标题视图都继承自 UIView。在您的 tableTwo 中实现以下内容并从中返回您的表格视图单元格实例。 -

 - (UITableViewHeaderFooterView *)headerViewForSection:(NSInteger)section

【讨论】:

我需要类似的东西,但这个方法永远不会被调用。 实现 UITableViewDelegate 和 UITableViewDataSource【参考方案2】:

标题在表格视图中很难处理。我会在第二个表中放置一个额外的部分,仅用于已通过的特定单元格。这可能是第二个表格的第一部分,您可以将其设计为看起来像标题。

另一种方法是创建一个普通视图并将其放在第二个表的标题中(这是完全合法的)。然后,您可以通过addSubView: 在该普通视图中安全地添加您的特定单元格(如果它有视图)。

【讨论】:

【参考方案3】:

我能够在第一个视图控制器中使用以下代码实现您想要做的事情:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    // create the new table view
    TestTableViewController2 *testView2 = [TestTableViewController2 new];

    // get a reference to the cell that they clicked and create a totally new cell, a 'copy' of
    // the original that we can pass to the next view
    UITableViewCell *clickedCell = [tableView cellForRowAtIndexPath:indexPath];
    UITableViewCell *clickedCellCopy = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
    clickedCellCopy.textLabel.text = clickedCell.textLabel.text;
    clickedCellCopy.detailTextLabel.text = clickedCell.detailTextLabel.text;

    // set this new cell as the header cell on the new view
    testView2.myHeaderCell = clickedCellCopy;

    // push the new view onto the stack
    [self.navigationController pushViewController:testView2 animated:YES];

然后将该属性添加到您的第二个表格视图控制器:

@property (nonatomic, retain) UITableViewCell *myHeaderCell;

然后在.m的viewDidLoad中:

- (void)viewDidLoad 
    [super viewDidLoad];

    // set our header cell as the table view's header
    self.tableView.tableHeaderView = self.myHeaderCell;

这给了我以下结果:

https://www.dropbox.com/s/t42lraue1kfolf3/cell%20demo.mov?dl=0

【讨论】:

【参考方案4】:

您可以在 xib 文件中创建自定义 UITableViewCell 并为每个视图加载它。您将不得不在两个视图控制器中创建它。根据复杂程度,您也可以完全在代码中完成此操作。

【讨论】:

以上是关于iOS:从现有单元格以编程方式创建表“标题”的主要内容,如果未能解决你的问题,请参考以下文章

Excel - 编程单元格以根据另一个单元格更改颜色

如何强制excel单元格以指数方式改变颜色?

创建一个 Angular 组件来显示一组 html 表格单元格以嵌入到其他表格中

iOS Swift:滑动表格单元格以执行操作(不显示)

UITableView以编程方式调用滑动操作

有没有办法使用 isnumber 和 search 从多个单元格中提取并搜索多个单元格以返回多个单元格?