如何根据另一个的值激活uitableview中的单元格?

时间:2013-05-29 03:02:28

标签: ios uitableview

我有一个表格视图。 3个单元格中的每一个都调用选择器视图。但我希望第三个细胞控制第四个细胞的外观。如果用户为单元格3选择值“1”,那么我希望单元格#4可用或激活给用户以选择其他值。

可以这样做吗?

3 个答案:

答案 0 :(得分:4)

你可以这样做。当您在选择器中选择一行时

 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

   // Check proper condition and do accordingly
  NSIndexPath *indexPath = [NSIndexPath indexPathForRow:4 inSection:0];
 [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationBottom];
}

这只是一个你需要详细说明的想法。

修改
一个棘手的解决方案
你想要灰掉最后一个单元格。只需检查 numberOfRowsInSection

中的解决方案即可
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
    if(showLastCell)
     {
       return 4;
     }
   return 3;
 }

如果条件为假,这将使最后一个单元格变灰。

当选择的选择器使条件为真(showLastCell = YES)并重新加载tableView

  [self.tableView reloadData]

答案 1 :(得分:0)

是的,可以做到。你只需要在didSelectMethod中访问它。

也许你可以尝试这样的事情:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row == 3){
       NSIndexPath *idx = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];
     //if you want to control only the appearance of the cell
    // UITableViewCell *cell = [tableView cellForRowAtIndexPath:idx];
    // do something with cell
    // [cell setNeedsLayout]// call to update the cell and comment out self tableview: call
      [self tableView:tableView didSelectRowAtIndexPath:idx];

  }
  else if(indexPath.row == 4){
      NSLog(@">>>clicked");
  }
}

答案 2 :(得分:0)

我不确定我是否完全明白这个问题。即便如此,也许这会有所帮助。

使用reloadRowsAtIndexPaths:withRowAnimation:在特定索引路径重新加载单元格。传入一个数组,其中包含您案例中第一个参数的单个索引路径。在表格的数据源中适当实施cellForRowAtIndexPath: