我有一个表格视图。3 个单元格中的每一个都调用一个选择器视图。但我希望第三个单元格控制第四个单元格的外观。如果用户为单元格 3 选择值“1”,那么我希望单元格 #4 可供用户使用或激活以选择一个附加值。
这可以做到吗?
我有一个表格视图。3 个单元格中的每一个都调用一个选择器视图。但我希望第三个单元格控制第四个单元格的外观。如果用户为单元格 3 选择值“1”,那么我希望单元格 #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]
是的,它可以做到。您只需要在 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");
}
}
我不确定我是否完全理解这个问题。即便如此,也许这会有所帮助。
使用reloadRowsAtIndexPaths:withRowAnimation:在特定索引路径重新加载单元格。在您的情况下,传入一个包含第一个参数的单个索引路径的数组。在表的数据源中适当地实现cellForRowAtIndexPath:。