iPhone SDK:如何使用Segmented来控制两个不同的TableView?

时间:2010-09-24 08:49:56

标签: iphone uitableview uisegmentedcontrol

我搜索类似问题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?

非常感谢您阅读并回复此问题。

1 个答案:

答案 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];
}

希望有所帮助 - 尽管它相当含糊。 :)