UINavigationController - Приложение пыталось выдвинуть ноль контроллера вида на цель, что мне не хватает? - PullRequest
3 голосов
/ 06 декабря 2011

У меня проблемы с настройкой моего контроллера навигации.Если я щелкну в ячейке таблицы в RootViewController, он не будет следующим ViewController.

Сообщение об ошибке гласит

«Приложение попыталось выдвинуть ноль контроллера представления на цель.”

Итак, я выдвинул что-то не так, было мое предположение, я, вероятно, упустил что-то важное из книги, которой я следую.

Таким образом, проблема появляется здесь в моем 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, которые я хочу нажать, когда янажмите в ячейке.Я просто не вижу своей вины или того, что мне не хватает!?

Может быть, кто-то может мне помочь и подсказать!Это было бы здорово!

Ответы [ 3 ]

5 голосов
/ 06 декабря 2011

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, kalenderViewCon & wunschViewCon) не равен нулю. Они выглядят как переменные экземпляра или свойства - просто убедитесь, что вы размещаете / запускаете их раньше в своем коде, как в -viewDidLoad.

1 голос
/ 10 сентября 2012

Для Google:

Это также может произойти, если вы не подключили свой ViewController к:

"<Your Project> App Delegate"

Если вы нене делайте этого, тогда ваш контроллер не инициализируется.

Вам также необходимо переименовать класс ViewController в соответствующий файл .h / .m:

Откройте XIBfile -> выберите ваш ViewController -> перейдите к «Identity Inspector» -> введите в текстовое поле «Class» имя ваших соответствующих файлов .h / .m.

Подключите ваш ViewController кПриложение Щелкните правой кнопкой мыши и перетащите из ... AppDelegate на свой ViewController enter image description here После освобождения щелкните соответствующую запись: enter image description here

1 голос
/ 06 декабря 2011

Вам не нужно создавать новый UINavigationController. Вам нужно вывести ваш контроллер из текущего окна.

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

где yourController - это один из ваших созданных экземпляров UIViewController (kundeViewCon, kalenderViewCon или wunschViewCon)

...