我搜索类似问题Need approach to show tables using segmented control?
解决方案是使用单个tableview
但我认为我的问题有点不同
因为视图将具有分段控件,有两个选择:“DHCP”和“手动”
当我按下“DHCP”时,分段控制器下会有一个分组表
此表视图不可编辑,每行只显示3个项目(IP地址,掩码,路由器)
但如果按“手动”,则表格视图将变为可编辑
只能输入第1行“IP Address : 169.95.192.1
”,第2行“Subnet mask 255.255.255.0
”......
所以我的问题是
< 1>如何使用分段控件切换两个不同的表?
< 2>如何创建可编辑的tableview?
非常感谢您阅读并回复此问题。
答案 0 :(得分:0)
正确......嗯 - 您需要拥有全球BOOL
,例如BOOL isManual;
现在在你的每个UITableViewDatasource方法中你需要检查这个bool:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
if(isManual){
// set cell content for manual
}
else{
//set cell content for DCHP
}
return cell;
}
// this function allows you to set a table view cell as editable
// look up UITableView delegate methods for more :)
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if(isManual){
return YES;
}
else{
return NO;
}
}
类似。
然后在您的分段控件回调方法中,您想要更改isManual和reloadData
在您的桌子上:
- (void)segmentedControlChanged:(id)selector {
UISegmentedControl *control = selector;
int selected = [control selectedSegmentIndex];
if(selected == 0){
isManual == NO;
}
else{
isManual == YES;
}
[self.tableView reloadData];
}
希望有所帮助 - 尽管它相当含糊。 :)