IOS 故事板 - 显示选择表格单元格的不同视图

Posted

技术标签:

【中文标题】IOS 故事板 - 显示选择表格单元格的不同视图【英文标题】:IOS storyboard - show different views on selection of table cells 【发布时间】:2014-01-04 13:50:40 【问题描述】:

我是 ios 编程新手。我有多个视图控制器。我首先显示 tableView 控制器,并且在它之前有一个导航控制器.. 我想根据所选单元格显示特定的视图控制器.. 我已将 tableView 控制器设置为 dynamic原型 Cell 到 1 我已经从表连接到我的一个视图控制器名称 APP1ViewController 我还有另外两个控制器名称 APP2 和 APP3 .. 我如何连接它们以便在特定单元格特定的视图控制器上加载。 这是显示单元格的代码..目前我的表格中有一节和三行

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


    static NSString *CellIdentifier = @"AppCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    switch (indexPath.row)
    
        case 0:
            cell.textLabel.text = @"APP 1 ";
            cell.detailTextLabel.text = @"Detail of App 1...";
            break;
        case 1:
            cell.textLabel.text = @"App2";
            cell.detailTextLabel.text = @"Detail of App 2 app...";
            break;
        case 2:
            cell.textLabel.text = @"App3";
            cell.detailTextLabel.text =
            @"Detail of App 3...";
            break;

        default:
            cell.textLabel.text = @"Unkown";
            cell.detailTextLabel.text = @"Unknown";
            break;
    

    return cell;

【问题讨论】:

【参考方案1】:

从具有表格的控制器而不是表格或单元格本身创建您的三个 segue。给每个 segue 一个唯一的标识符。在tableView:didSelectRowAtIndexPath: 中,调用表视图控制器的performSegueWithIdentifier:sender: 方法并选择与所选行匹配的标识符。

【讨论】:

是的,谢谢我明白了。我按照你的步骤现在我想问一件事我如何在找到 segue 标识符后显示控制器 .. 正确吗? - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender if([[segue identifier] isEqualToString:@"App1"] ) App1ViewController *app1 = segue.destinationViewController; 对吗? 我这样做了 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender if([[segue identifier] isEqualToString:@"App1"] ) [self performSegueWithIdentifier: @ “App1”发件人:self]; 但它不起作用 如我所说,将performSegueWithIdentifier... 放入tableView:didSelectRowAtIndexPath:prepareForSegue... segue 被触发后被调用。 你能编辑我的代码吗.. 我是 ios 新手。我觉得很难理解这个【参考方案2】:

试试这个,

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"your storyboard" bundle:nil];
    UIViewController *viewController = nil;      
    switch (indexPath.row) 
    case 0:
       viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController1"];
        break;
    case 1:
        viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController2"];
        break;
    case 2:
        viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController3"];
        break;

    default:
        viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController4"];
        break;
     
    [[self navigationController] pushViewController:viewController animated:YES];
    

【讨论】:

感谢您的回答。目前我正在尝试使用 Phillip Mills 的方式来处理它..希望它有效..否则我会使用你的【参考方案3】:

实现 Tablview 的委托方法之一

tableView:didSelectRowAtIndexPath:

在上述委托方法中,您可以从情节提要中获取特定的视图控制器,然后实例化并推送到导航控制器,如下所示

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"your storyboard" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Your Storyboard's identifier that you want to push"];
[[self navigationController] pushViewController:viewController animated:YES];

【讨论】:

以上是关于IOS 故事板 - 显示选择表格单元格的不同视图的主要内容,如果未能解决你的问题,请参考以下文章

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

故事板自动布局将视图放置在表格单元格中,并将尾随到超级视图约束固定到最左侧

故事板中的自定义单元格行高度设置没有响应

iOS - 表格视图单元格未正确呈现

应用于控制器的背景未应用于故事板swift中的表格视图单元格

使用自定义表格视图单元格中的故事板segue