2

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

这可以做到吗?

4

3 回答 3

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;
 }

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

When the picker selected make the condition true( showLastCell = YES) and reload the tableView

  [self.tableView reloadData]
于 2013-05-29T04:59:10.350 回答
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");
  }
}
于 2013-05-29T03:21:35.457 回答
0

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

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

于 2013-05-29T05:05:02.390 回答