0

我有一个表格视图,当我选择其中一个项目时,它应该转到我的 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];

}
4

2 回答 2

1

可能的问题可能是:

  1. 您的应用程序不是基于导航控制器的。只需检查您是否通过 Xib、情节提要或以编程方式创建了导航控制器。

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

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

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

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

在您的应用程序委托中创建一个导航控制器对象并将其设置为 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;
}
于 2013-09-17T06:23:36.310 回答
0

不是 的问题tableView,问题出在 中navigationController,检查是否为 nil 或 indebug area 如果是 nil 则初始化。

希望这会帮助你。

编辑:如何声明 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;
}
于 2013-09-17T08:32:10.800 回答