3

我无法让我的导航控制器正常运行!如果我单击 RootViewController 的表格单元格,它看起来不是下一个 ViewController。

错误消息读取

“应用程序试图在目标上推送一个 nil 视图控制器。”</p>

所以我分配了一些错误的东西,这是我的猜测,我可能错过了我所遵循的书中的一些重要内容。

所以问题出现在我的 RootViewController.m 中:

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

    UINavigationController *navigationController= [[UINavigationController alloc]init];

    switch ([indexPath row]) {

        case 0:
            [navigationController pushViewController:kundeViewCon animated:YES];
            break;

        case 1:
            [navigationController pushViewController:kalenderViewCon animated:YES];
            break;

        case 2:
            [navigationController pushViewController:wunschViewCon animated:YES];
            break;
    } 
}

在我的 AppDelegate.m 中,我正在执行以下操作来将 RootViewController 设置为 NavigationController:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

// Navigation Controller

    RootViewController *rootViewController = [[RootViewController alloc]init];

    navigationController = [[UINavigationController alloc]initWithRootViewController:rootViewController];

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];
    return YES;
}

因此,当我单击单元格时,我得到了我想要推送的所有其他 ViewController。我只是看不到我的错或我错过了什么!?

也许有人可以帮助我并给我一个提示!那太好了!

4

3 回答 3

5

RootViewController已经有了它的导航控制器——你在应用程序委托中创建了它。选择单元格时创建新的导航控制器没有意义。它应该看起来更像这样:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch ([indexPath row]) {
        case 0:
            [self.navigationController pushViewController:kundeViewCon animated:YES];
            break;
        case 1:
            [self.navigationController pushViewController:kalenderViewCon animated:YES];
            break;
        case 2:
            [self.navigationController pushViewController:wunschViewCon animated:YES];
            break;
    }
}

此外,只需确保当您调用-pushViewController:animated:视图控制器(即& )kundleViewCon时不为零。它们看起来像实例变量或属性 - 只需确保您在代码的早期分配/初始化它们,例如在.kalenderViewConwunschViewCon-viewDidLoad

于 2011-12-05T23:28:32.423 回答
1

您不必创建新的 UINavigationController。您需要从当前窗口中获取控制器。

[self.navigationController pushViewController:yourController animated:YES];

其中 yourController 是您实例化的 UIViewController 之一(kundeViewCon、kalenderViewCon 或 wunschViewCon)

于 2011-12-05T23:29:12.097 回答
1

对于 Google 员工:

如果您没有将 ViewController 连接到:

"<Your Project> App Delegate"

如果你不这样做,那么你的控制器不会被初始化。

您还需要将 ViewController 的类重命名为对应的 .h / .m 文件:

打开 xib 文件 -> 选择您的 ViewController -> 转到“身份检查器” -> 在文本字段“类”中键入相应 .h/.m 文件的名称。

将您的 ViewController 连接到应用程序 通过右键单击并从 ...AppDelegate 拖动到您的 ViewController 在此处输入图像描述 释放后单击相应的条目: 在此处输入图像描述

于 2012-09-10T13:56:32.387 回答