我在tableview中有三个部分。三节电池包含3个不同的视图控制器。当用户有机会在tableview中点击2个不同的部分时,我们会因后退导航崩溃而崩溃。 UINavigationController异常。我们如何禁用该部分以避免不止一次的干扰。
答案 0 :(得分:0)
您应该忽略您不想处理的细胞部分:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath.section == 1) // Don't do anything where row in section 1 is pressed
return nil;
else
{
//handle cell selection
}
}
答案 1 :(得分:0)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//once you get control in this section disable the table for 1 second than in this duration your navigation controller will pop and user will not able to tap second time
[self performSelector:@selector(enableTable) withObject:nil afterDelay:1.0];
tbl.userInteractionEnabled=NO;
}
-(void)enableTable
{
tbl.userInteractionEnabled=YES;
}
答案 2 :(得分:0)
有一个表视图委托方法tableView:willSelectRowAtIndexPath:
OS会在选择单元格之前调用该方法。
实现该方法,如果索引路径中的部分是您不想选择的部分,则返回nil。
如果您的章节编号定义为K_SECTION_TO_IGNORE,您的代码可能如下所示:
#define K_SECTION_TO_IGNORE 1
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == K_SECTION_TO_IGNORE)
return nil;
else
return indexPath;
}