使用单选按钮实现tapped插入表格单元格的方法

时间:2016-11-10 21:27:17

标签: ios objective-c xcode uitableview

我要做的是将一些新数据插入数据源数组,然后执行[tableView reloadData]。可以插入新数组,但有两个问题。

1)我想在新单元格中有两个单选按钮供用户选择。我应该定义一个新的单元格对象吗?

2)重新加载数据时,所选单元格的颜色不能像以前一样设置为绿色。

或者关于如何最好地实现这一点的任何其他建议,谢谢!!: enter image description here

1 个答案:

答案 0 :(得分:1)

对于第一个问题,我要做的是在故事板中预先布局包含两个单选按钮的单元格(您也可以在.xib文件中执行此操作)。然后我将为它设置一个标识符,如“LanguageSkillSelectionTableViewCell”或其他东西。之后,当我要将新数据集加载到表视图中时,我可以通过回调cellForRowAtIndexPath:

管理表视图中单元格的表示。

例如,如果我想在开头加载LanguageSkillSelectionTableViewCell,那么我只需将它设置为indexPath.row == 0.否则将数据列表的内容设置为其他行。

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

    if(_loadedNewData)
    {
        if(indexPath.row < dataList.count && indexPath.row > 0)
        {
            tableCell = (DataTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"DataTableViewCell"];

            //set attributes of the tableCell
        }

        else
        {
            tableCell = (LanguageSkillSelectionTablViewCell *)[tableView dequeueReusableCellWithIdentifier:@"LanguageSkillSelectionTableViewCell"];

            //set attributes of the tableCell
        }
    }

    else
    {
        //load in default order
    }

    return tableCell;
}

您可以在此回调下播放单元格的排列和显示。

对于第二个问题,您必须为用户在类中的全局变量中选择的选择存储标志或状态。然后,每次重新加载单元格时,您只需通过为该单元格设置一个更新单选按钮选择状态的方法来更新该单元格的选择状态。

例如:

如果用户选择了英语,那么它就像是:

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

    if(_loadedNewData)
    {
        if(indexPath.row < dataList.count && indexPath.row > 0)
        {
            tableCell = (DataTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"DataTableViewCell"];

            //set attributes of the tableCell
        }

        else
        {
            tableCell = (LanguageSkillSelectionTablViewCell *)[tableView dequeueReusableCellWithIdentifier:@"LanguageSkillSelectionTableViewCell"];

            //set attributes of the tableCell

            [(LanguageSkillSelectionTablViewCell *)tableCell setLanguageSelectionState:canReadWrite];
        }
    }

    else
    {
        //load in default order
    }

    return tableCell;
}