2013-01-31 22 views
0

这是我第一次发表一个问题,谢谢大家的进步。对于iOS UITableView,我可以使用CUSTOMIZE CELL XIB加载特定的行吗?

现在,我想实现一个默认的风格分组UITableView包含多组数据。对于每一行,都会有一个详细的Disclosure按钮作为accessoryType图标。当人们点击披露按钮时,我希望细胞扩展与所选行的详细信息。

我试图通过向选定行添加自定义单元来完成此任务,但是,它非常复杂。所以目前,我正在尝试通过使用定制单元xib重新加载特定行来完成此任务。我知道有一个reloadRowsAtIndexPaths的委托方法。但我可以用它来重新加载特定的单元格吗?谢谢

请建议!

十分感谢

回答

0

你有没有尝试过这样的事情:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == mySpecialSelectedCell) 
    { 
     //Load all your custom stuff here 
    } 
    else 
    { 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 
    } 
    if (cell == nil) 
    { 

    } 

    return cell; 
} 

你将不得不当您单击展开按钮来获取细胞的indexPath。

或者你可以看看this answer。然后,就像上面的代码一样,只需加载您使用该NIB指定的一个单元格,然后按照通常的方式加载剩下的单元格。

+0

谢谢您的回复!你的解决方案的问题是,如何区分哪一行是默认行,哪一行是扩展的。我的意思是,例如,我有第一组5行,然后我扩大第一行,所以,第二行将成为自定义行。所以不可能找出哪个是默认单元格,哪个是自定义单元格。 :( – Magnus

+0

此外,当我们添加新行时,它也会调用cellForRowAtIndexPath:并通过if(cell == nil),如何区分这是否为初始化默认单元或用于定制单元?谢谢 – Magnus

+1

您需要创建一个包含当前选择的单元格indexPath的类变量,然后当你得到'didSelectCellAtIndexPath'时,你将该变量设置为所选择的索引路径并重新加载表格数据,然后你总是没有选中的单元格,然后可以创建基于选择 – Putz1103

0

您可以实现tableview委托方法来设置需要展开的单元格的高度。在heightForRow方法中添加一些条件检查,当用户点击按钮时,改变条件以增加高度。当表重新加载时,它会调用这个方法,并将重新加载更高的单元格。

+0

嗨,我检查过了,我们不能通过减小单元格的高度来隐藏元素,元素会互相重叠,因为无论如何 – Magnus

相关问题