为每个表视图项分配单独的用户界面

时间:2013-01-09 23:34:13

标签: objective-c uitableview user-interface

有人能告诉我如何使用故事板为桌面视图元素分配界面吗?我正在制作一个医疗计算器,每个方程都有不同的计算器,我需要帮助制作指向元素的代码以推送到另一个界面。这是因为对于每个等式,都有不同的字段要填写(例如年龄,氧气水平,是否有人患有糖尿病,身高等)并非每个等式都需要相同的字段。

我试过这样做:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Deselect row
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    // Declare the view controller
    UIViewController *anotherVC = nil;

    // Determine the row/section on the tapped cell
    switch (indexPath.section) {
        case 0:
            switch (indexPath.row) {
                case 0: {
                    // initialize and allocate a specific view controller for section 0 row 0
                    anotherVC = [[BmiViewController alloc] init];
                    break;
                }
                case 1: {
                    // initialize and allocate a specific view controller for section 0 row 1
                   /anotherVC = [[AaOxygenGradientViewController alloc] init];
                    break;
                }
            }
            break;
    }
}

但是在执行此操作之后,它会返回到故事板文档中最初的内容(因为我已经创建了界面programmicatally,这是空的),而不是显示我的测试警告弹出窗口。

此外,是否有可能制作一堆表格视图单元格,然后将每个单元格转换为故事板中的每个其他视图控制器?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

首先,您正在运行deselectCellAtIndexPath?这是什么原因?如果您只是想删除蓝色突出显示,那么最好更改单元格的UITableViewCellSelectionStyle(或类似内容)。

我不确定你要求的第一部分是什么,但是对于segue部分则是肯定的。

Storyboard中设置要从tableViewController到另一个VC的segue,并为其提供所有合理的标识符。

即。 medicalCalulatorSegue graphSegue userDetailsS​​egue 等...

然后在您的didSelect方法中,您会有类似......

的内容
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //some stuff...

    switch(indexPath.row) {
        case 0:
            [self performSegueWithIdentifier:@"medicalCalulatorSegue"];
            break;
        case 1:
            [self performSegueWithIdentifier:@"graphSegue"];
            break;
        case 2:
            [self performSegueWithIdentifier:@"userDetailsSegue"];
            break;
    }
}

然后根据选择的单元格,这将转换到每个不同的视图控制器。

不删除单元格的原因是,在您的方法prepareForSegue中,您仍然可以访问所选单元格的indexPath ...

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];