我有一个表格视图,当我选择其中一个项目时,它应该转到我的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];
}
答案 0 :(得分:1)
可能存在的问题可能是:
您的应用程序不是基于导航控制器。只需检查您是否通过Xib,故事板或编程创建了导航控制器。
您的EventsDetailsViewController根本没有创建。有一个断点或记录对象并测试它是否已创建或仅为零。
您可以使用以下语句轻松验证这两种情况:
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;
}