我有一个表格视图。 3个单元格中的每一个都调用选择器视图。但我希望第三个细胞控制第四个细胞的外观。如果用户为单元格3选择值“1”,那么我希望单元格#4可用或激活给用户以选择其他值。
可以这样做吗?
答案 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:。