popViewControllerAnimated не работает, но кнопка возврата работает - PullRequest
0 голосов
/ 03 мая 2010

Я создаю приложение на основе шаблона Utility. Главный экран состоит из меню с несколькими кнопками, каждая из которых создает отдельный оборотный вид. В одном из этих перевёрнутых видов я также настроил Navigation Controller, который прекрасно работает, пока у меня активирована панель навигации ... Я могу выдвинуть вид, но мне нужно использовать кнопку «назад», чтобы вернуться к моему вид сбоку, который будет корнем навигационного контроллера. Проблема возникает, если я пытаюсь вернуться назад, используя «popViewControllerAnimated», правильно настроенный с помощью кнопки, вместо кнопки «назад» на панели навигации. У меня по какой-то причине происходит сбой приложения, и я не могу понять, почему.

Я мог бы просто использовать кнопку «назад» на панели навигации и забыть о проблеме, но я предпочел бы иметь свою кнопку для возврата.

Мое приложение состоит из следующего:

Мой APPDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil];
    self.menuViewController = menuController;
    [menuController release];

    menuViewController.view.frame = [UIScreen mainScreen].applicationFrame;
    [window addSubview:[menuViewController view]];
    [window makeKeyAndVisible];

    return YES;
}

MenuViewController.m запускает мой оборотный вид:

- (IBAction)showFuelUpliftView {    

    FuelUpliftViewController *controller = [[FuelUpliftViewController alloc] 
                                            initWithNibName:@"FuelUpliftView" bundle:nil];
    controller.delegate = self;
    controller.title = @"Fuel Uplift";

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
    [navController setNavigationBarHidden: NO];
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:navController animated:YES];

    [navController release];
    [controller release];
}

FuelUpliftViewController.m, где я нажимаю второй вид NavigationController с помощью кнопки:

- (IBAction)showFuelUplift2View:(id)sender {
    UIViewController *controller = [[UIViewController alloc] initWithNibName:@"FuelUplift2View" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

И, наконец, мой FuelUplift2ViewController.m, где происходит сбой приложения при попытке вернуться:

- (IBAction)backFromFuelUplift2View {
    [self.navigationController popViewControllerAnimated:YES];
}

Я не знаю, имеет ли все это смысл, в настоящее время я начинаю с моего первого заявления и все еще изучаю благодаря традиционному методу ошибки метод. Тем не менее, я не вижу причины этой проблемы и был бы признателен за любую помощь, которую я могу получить.

Большое спасибо,

Маню

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Я наконец-то смог решить мою проблему.

Чтобы создать второе представление в моем UINavigationController, у меня было следующее:

- (IBAction)showFuelUplift2View:(id)sender {
    UIViewController *controller = [[UIViewController alloc] initWithNibName:@"FuelUplift2View" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

Я взял этот код с другого форума, и он сразу заработал, поэтому я не мог представить, что у меня будут проблемы с ним. С помощью приведенного выше кода, если я правильно понимаю, я создаю новый UIViewController для моего второго представления, и поэтому я смог переключиться на это второе представление и получить рабочую кнопку «Назад».

Так или иначе, чтобы настроить мою собственную кнопку для возврата, я должен был написать следующее:

FuelUplift2ViewController *controller = [[FuelUplift2ViewController alloc] initWithNibName:@"FuelUplift2View" bundle:nil];

По-видимому, я правильно инициализировал случайный UIViewController, но, поскольку я не указывал правильно, какой это был (FuelUplift2ViewController), мой метод возврата к первому представлению не мог работать должным образом.

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

0 голосов
/ 03 мая 2010

Когда вы спрашиваете о сбое, очень хорошая идея показать сообщение, которое вы получаете.

Нет ничего явно неправильного в показанном вами коде, хотя строка "self.delegate" вызывает у меня подозрение. Вы должны проверить, как объявлено свойство, и если вы дважды его отпускаете.

...