单击uitableviewcell iOS后加载uiviewcontroller

时间:2013-10-04 12:29:36

标签: iphone ios uitableview ios7

我对如何实现简单的基于uitableview的菜单感到困惑。在Kayak应用程序中http://www.sendspace.com/file/igv31p 我的故事板看起来像这样:导航控制器--->主视图控制器 - >细节视图控制器。在主视图控制器中,我有一个表视图。我用4个单元格动态填充它,这些单元格是产品,商店,包裹和财务。我想做的就是显示将成为子uiviewcontroller的子uiviewcontroller。像这样的东西: 产品 - >具有特定功能的UiViewController 商店 - >其他具有特定功能的UIViewControlelr ......等等。

我创建了didselectrowatindex方法 并尝试使用pushViewController做一些事情,如下面的代码方法,但它不起作用。

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

[tableView deselectRowAtIndexPath:indexPath animated:YES];
StoresViewController *storeView = [[StoresViewController alloc]init];
switch (indexPath.section) {
    case 0:
        switch (indexPath.row) {
            case 0:
            {

            NSLog(@"Products");

            }
                break;
            case 1:{

                [self.navigationController pushViewController:storeView animated:YES];
                NSLog(@"Stores");

            }
                break;
            case 2:{
                NSLog(@"Packages");
            }
                break;
            case 3:{
                NSLog(@"Finances");

            }
                break;
        }
        break;

    default:
        break;
}

如果有人能帮我理解,我将不胜感激。如果之前询问过这个问题,请告诉我在哪里:)提前致谢

像Kayak应用程序中的东西 http://www.sendspace.com/file/igv31p

2 个答案:

答案 0 :(得分:1)

只需替换此代码..

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

[tableView deselectRowAtIndexPath:indexPath animated:YES];


switch (indexPath.section) {
    case 0:
        switch (indexPath.row) {
            case 0:
            {
                NSLog(@"Products");
            }
                break;
            case 1:
            {
                UINavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"StoresViewController"];

                [self presentViewController:navigationController animated:YES completion:nil];
                NSLog(@"Stores");
            }
                break;
            case 2:
            {
                NSLog(@"Packages");
            }
                break;
            case 3:
            {
                NSLog(@"Finances");

                break;
            }
                break;

            default:
                break;
        }
}

答案 1 :(得分:0)

StoresViewController *storeView = [[StoresViewController alloc]initWithNibName:@"StoresViewController" bundle:nil];

在创建对象时简单地传递了笔尖。