0

我是 iOS 编程的新手,我想做一件简单的事情。我看到了几个关于我的问题的主题,但我不明白为什么我的代码不起作用......

  • 我创建了一个名为 details2ViewController 的 UIViewController 子类,带有一个 .xib
  • 在我的名为ViewController.xib的主视图中,我有一个 tableView
  • ViewController.m中,我在顶部添加了:#import "details2ViewController.h"
  • ViewController.m中,我修改了didSelectRowAtIndexPath方法,如下所示:

    details *det = [[details alloc] init];
    [self.navigationController pushViewController:det animated:YES];
    

当我点击一个单元格时没有警告,但没有任何效果......我准确地说我正在没有 mainStoryBoard 的情况下工作。

注意:是我之前关于这个问题的帖子。

(对不起,如果我的英语很尴尬,我是法国人......谢谢你的帮助!)

4

3 回答 3

0

您必须首先在 AppDelegate.h 中定义导航控制器的属性:

@property (strong, nonatomic) UINavigationController *controller;

然后在 AppDelegate.m 文件中的 didFinishLaunchingWithOptions: 方法中执行此操作:

details2ViewController *controller=[[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil];
    self.controller = [[UINavigationController alloc] initWithRootViewController:controller];
}

self.window.rootViewController=self.controller;
[self.window makeKeyAndVisible];
return YES;

然后在didSelectRowAtIndexPath中的details2ViewController.m中:

details2ViewController *det = [[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil];
[self.navigationController pushViewController:det animated:YES];

请让我知道它是否有效.. :) 谢谢。

于 2013-09-24T10:20:42.870 回答
0

首先检查您是否已正确地将 TableView 的委托连接到 ViewController 的文件所有者。TableView 的-didSelectRowAtIndexPath方法是委托方法。

details其次,当您已经导入时,我不明白为什么要用作类名details2ViewController.h。所以,看起来你应该details2ViewController改用details,你的代码应该是这样的:

 details2ViewController *det = [[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil];
[self.navigationController pushViewController:det animated:YES];

确保您ViewController的确实嵌入在UINavigationController. 如果没有,那么你self.navigationController will就是nil

或者您可以阅读UINavigationController 简介

于 2013-09-23T14:32:21.780 回答
0

如果您使用 Storyboard,则可以使用此代码。

- (void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
YourViewController *yourViewController = [storyboard instantiateViewControllerWithIdentifier:@"StoryBoardID"];
[self.navigationController pushViewController:yourViewController animated:YES];
}

不要忘记在最后一行设置animated:BOOL为。YES

于 2013-09-24T07:14:27.387 回答