在自定义TableView类下向自定义表视图单元添加按钮

时间:2013-03-19 20:39:04

标签: uitableview storyboard

编辑:查看我的答案,找到一个功能正常的应用,以某种方式实现了我的目标。

我已经检查了这个并遵循了每个可用的教程 - 这一切似乎都非常简单,但我的故事板&检查员现在只允许我做以下事情:

- 向自定义UITableViewButtons添加按钮(使用自定义类'Song Cell')

每次我尝试这样做时,它都会将按钮放在表视图上方的视图上。我已经尝试将单元设置为动态,静态,基本以及我能找到的所有其他切换开关。

我认为这是因为我在视图方面有点尴尬,所以我尝试将我的TableView设置为自定义类。但是,它没有出现在Storyboard的Class Inspector中。这就是我所做的,将此表视图设置为自定义类,因此无济于事:

- 创建继承自UITableViewController的自定义类,名为SongTableViewController

- 在Storyboard中,将表视图控制器的类设置为SongTableViewController

请参阅此层次结构:

//编辑 - 显然我没有10个代表来发布图片,所以我只是自己绘制:

▼ Voting View Controller - Current Songs
   ▼ View
     ▼ Table View     // This is where I would like the custom class, SongTableViewController
       > Song Cell     
       > Song Cell    //  These cells are where I would like to add the custom buttons
       > Song Cell
       > Constraints
     > Label - 00:00
     > Label - Voting will reset in:
    Navigation Item - Current Songs
First Responder
Exit

当我选择表视图并转到检查器更改其类时,除了UITableView之外没有其他选项。试图对此进行硬编码并点击“返回”也没有任何作用。

由于结构的原因,我无法为这些单元格添加按钮 我的看法?或其他什么?

3 个答案:

答案 0 :(得分:1)

也许您应该使用自定义单元格创建一个xib。例如,使用xib“CustomeCell.xib”的类“CustomeCell”。

您通过xib文件在您的单元格中放置了一些对象,并在您的UITableView类中,执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }
    // configure cell 

    return cell;
}

不要忘记在xib文件中为您的TableView链接数据源和委托,并在UITableView类中添加委托:)

故事板很有用,但有时,好方法是使用xib文件:)

编辑 您可以阅读本教程,这是一个非常好的示例,如何使用xib文件管理自定义单元格/ tableview:http://www.appcoda.com/customize-table-view-cells-for-uitableview/

希望它对你有所帮助:)。

答案 1 :(得分:0)

您可能不希望更改表视图的类。听起来你真正想要做的就是更改一个(或多个)单元原型的类。在故事板中选择一个单元格并将其类更改为您的歌曲单元格类。

答案 2 :(得分:0)

以下是对正在发生的事情的描述,以及如何实现这一点的示例:

  

你有一个UIViewController子类,并添加   通过在故事板中拖放来查看表格。

     

然后你需要做一些额外的工作来填补a之间的空白   表视图控制器和普通视图控制器 - 声明您   符合数据源和委托协议,为其创建一个出口   在表格视图中,将插座连接到表格视图并连接   表视图的代理和数据源出口到VC。

     

实现三种数据源方法(节数,数量)   rows和cellForRow ...)并且你已经完成了。

Link to Prototype