【问题标题】:IOS storyboard - show different views on selection of table cellsIOS 故事板 - 显示选择表格单元格的不同视图
【发布时间】: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;
}

【问题讨论】:

    标签: ios uitableview uistoryboardsegue


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-10
      • 2012-09-26
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多