如何将自定义内容添加到不同的单元格内容

时间:2015-03-26 09:26:13

标签: ios objective-c uitableview

我有UITableVIew。有3行,我希望每一行都有不同的单元格内容。

第一个单元格应该有一个LABEL,第二个单元格应该有一个LABEL a按钮,第三个单元格应该有2个标签和一个按钮。下图说明了表格的显示方式。

enter image description here

我可以毫无问题地调整3个单元格的高度,我使用了heightForRowAtIndexPath

首先,我将Label(从使用storyboard的第一个单元格拖动到.h文件)拖动以创建IBOutlet。同样,我也为所有属于其他细胞的细胞含量做了。

我结束了以下错误The myButton outlet from the MyTableViewController to the UIButton is invalid. Outlets cannot be connected to repeating content.

有人可以告诉我如何使用故事板为不同的单元格添加自定义内容。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"c1"];

    UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:@"c2"];



//content for cell 1

cell.label1.text =@"hi";



//content for cell 2

cell1.label2.text =@"hi 2";

更新

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    Cell1 *cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];

    Cell2 *cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell2"];


    if (cell == nil)

    {

        cell = [[Cell1 alloc] initWithStyle:UITableViewCellStyleSubtitle

                                      reuseIdentifier:@"cell1"];

    }

        if (cell1 == nil) {

        cell1 =[[Cell2 alloc] initWithStyle:UITableViewCellStyleSubtitle

                                        reuseIdentifier:@"cell2"];

    }

    cell1.la1.text= @"Hey Man";

1 个答案:

答案 0 :(得分:1)

您无法从UITableViewCellUITableViewController创建插座。您需要创建UITableViewCell的子类,将原型单元设置为该类类型,然后将插座连接到此新单元类。

tableView中可以有多个单元格副本,出口有1对1的映射。如果您拥有该单元格的多个副本,尝试执行此操作将会中断。

我建议看一下这个链接:

http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7-part-1

有两个部分详细介绍如何从"设计自己的原型单元格开始创建单元格"

修改

如果您的问题是何时创建每个单元格,则需要使用回调中的indexPath来解决此问题。以下是一个示例。然而,这与您询问如何在单元格上使用IBOutlet的问题完全无关。

if(indexPath.row == 1) 
{
    MyLabelCell *cell = [tableView dequeueReusableCellWithIdentifier:@"c1"];
    // customise cell
    return cell;
}
else if (indexPath.row == 2 || indexPath.row == 3)
{
    MyButtonCell *cell = [tableView dequeueReusableCellWithIdentifier:@"c2"];
    // customise cell
    return cell;
}