如何从一个带有动态单元格的表格切换到 3 个或更多不同的视图

Posted

技术标签:

【中文标题】如何从一个带有动态单元格的表格切换到 3 个或更多不同的视图【英文标题】:How switch to 3 or more different views from one table with dynamic cells 【发布时间】:2014-03-19 17:59:09 【问题描述】:

我有表格视图,表格是动态数据。我需要根据特定的行切换到不同的视图。 我需要检查用户是否点击了带有“BMW”字样的行,那么您需要打开“机器”视图,如果带有“suzuki”字样的行,则打开摩托车视图。 我用于这个故事板。

【问题讨论】:

有了故事板,我现在不知道该怎么做。我尝试使用 xib 文件。 ImageViewController *obj =[[ImageViewController alloc]initWithNibName:@"ImageViewController" bundle:nil]; [self.navigationController pushViewController:obj 动画:YES];但它没有工作 关于这个话题有很多问题。使用tableView:didSelectRowAtIndexPathperformSegueWithIdentifier:sender: 【参考方案1】:

只需将 segue 中的所有控制器连接到此控制器即可。请注意,不要将 segue 连接到任何按钮的 otlet,而是将其与整个视图控制器连接。然后按照以下步骤操作:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    NSString * name = [namesArray objectAtIndex:indexPath.row];

    if ([name isEqualToString:@"BMW"])
    
        [self performSegueWithIdentifier:@"MachineViewController" sender:self];

    
    else if ([name isEqualToString:@"suzuki"])
    
        [self performSegueWithIdentifier:@"MotorCycleViewController" sender:self];
    

【讨论】:

【参考方案2】:

你可以在UITableView中使用didSelectRowAtIndexPath

例如:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    NSString * name = [namesArray objectAtIndex:indexPath.row];

    if ([name isEqualToString:@"BMW"])
    
        //Open Machine View

        MachineInfoController * info = [[MachineInfoController alloc] init];

        // If you use `UINavigationController` use this line
        [self.navigationController pushViewController:info animated:YES];

        // If you are not using `UINavigationController` use this line
        [self presentViewController:info animated:YES completion:nil];

        info = nil;
    
    else if ([name isEqualToString:@"suzuki"])
    
        //Open Motorcycle View

        MotorCycleInfoController * info = [[MotorCycleInfoController alloc] init];

        // If you use `UINavigationController` use this line
        [self.navigationController pushViewController:info animated:YES];

        // If you are not using `UINavigationController` use this line
        [self presentViewController:info animated:YES completion:nil];

        info = nil;
    

【讨论】:

但是在这一行写什么 //Open Machine View 我使用你的代码,但我有异常,'-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“ImageView”笔尖,但未设置视图出口。' 现在如果我点击该行会出现黑屏

以上是关于如何从一个带有动态单元格的表格切换到 3 个或更多不同的视图的主要内容,如果未能解决你的问题,请参考以下文章

动态更改表格视图单元格的高度

如何动态更改自定义单元格的表格视图单元格的高度?

使用带有表格行与单元格的 JQuery .on 选择器

如何限制标题单元格的宽度

iOS动态地将新单元格加载到表格视图的底部

动态表格视图单元格,以编程方式更改子视图高度