当表视图上的didSelectRowAtIndexPath时,什么也没发生

时间:2013-09-17 01:13:33

标签: ios cocoa-touch

我有一个表格视图,当我选择其中一个项目时,它应该转到我的EventsDetailsViewController故事板以显示详细信息,但是当我单击表格视图中的一个主题时没有任何反应。下面是我认为会在选择时将用户发送到EventsDetailsViewController的代码,但不会。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    EventsDetailsViewController *eventsdetailsViewController = [[EventsDetailsViewController alloc]
    initWithNibName:@"EventsDetailsViewController" bundle:nil];
    eventsdetailsViewController.title = [[events objectAtIndex:indexPath.row] objectForKey:@"eName"];
    eventsdetailsViewController.eventsArticle = [events objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:eventsdetailsViewController animated:YES];

}

2 个答案:

答案 0 :(得分:1)

可能存在的问题可能是:

  1. 您的应用程序不是基于导航控制器。只需检查您是否通过Xib,故事板或编程创建了导航控制器。

  2. 您的EventsDetailsViewController根本没有创建。有一个断点或记录对象并测试它是否已创建或仅为零。

  3. 您可以使用以下语句轻松验证这两种情况:

    NSLog("Navigation COntroller %@",self.navigationController);
    NSLog("Events COntroller %@", eventsdetailsViewController);
    

    让我们假设ABCController是表视图委托方法存在的控制器,并且从那里你想要移动到EventsDetailsViewController。 将导航控制器添加到现有项目中:

    在app委托中创建导航控制器对象,并将其设置为rootViewController

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:rootController];
    self.window.rootViewController = navigationController;
        [self.window makeKeyAndVisible];
     return YES;
    }
    

答案 1 :(得分:0)

这不是tableView的问题,问题出在navigationController,请检查debug area中是否为零 如果它是零则初始化它。

希望这会对您有所帮助。

编辑: 如何声明NavigationController

将其添加到AppDelegate.m文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    ParentViewController *parent = [[ParentViewController alloc]init];
    UINavigationController *myNav = [[UINavigationController alloc]initWithRootViewController:parent];
    self.window.rootViewController = myNav;
    [self.window makeKeyAndVisible];
    return YES;
}