2014-09-26 2 views
3

Когда я запускаю свое приложение на iOS 7 работает как ожидается. Когда я запускаю свое приложение на iOS 8 вещей НЕ работает как ожидалось. Это все без внесения одного изменения в кодовую базу.iOS 8 pushViewController не работает, в iOS 7 все работает так, как ожидалось, нулевые изменения кода?

В частности, я пытаюсь «нажать» новый контроллер просмотра в стеке и в iOS 8 ничего не происходит. < - Это ошибка, ничего не происходит. Никакой аварии, просто ничего.

Сначала я думал, что это может быть раскадровку связаны и поэтому переключился от запуска моего толчка SEGUE через performSegueWithIdentifier только вручную загрузить его из видеоредактора с помощью instantiateViewControllerWithIdentifier, а затем представить его через [self.navigationController pushViewController:myVC animated:YES];.

Любой из вышеперечисленных методов работает на iOS 7. Однако при запуске моего приложения на устройстве iOS 8 BOTH не работает. Кроме того, я заметил странное поведение в отладчике/NSLog. В прошивкой 7, когда я бегу NSLog(@"self.navigationController = %@", self.navigationController) я (как и ожидалось):

self.navigationController = <UINavigationController: 0x145986b0>

В прошивкой 8, я также получаю (как и ожидалось):

self.navigationController = <UINavigationController: 0x15d646db0>

Между тем, в той же точке в коде, когда я вставляю разрыв, а затем проверяю вещи через консоль следующим образом: (lldb) po self.navigationController В iOS 7 я получаю (как ожидалось):

(lldb) po self.navigationController <UINavigationController: 0x175810b0>

ОДНАКО, в прошивкой 8, я получаю:

(lldb) po self.navigationController error: property 'navigationController' not found on object of type 'PHMenuTableViewController *' error: 1 errors parsing expression

В обоих приведенных выше примерах po я строю с моей "Debug" строить конфигурации.

В конечном счете, я просто пытаюсь нажать контроллер вида. Мой оригинальный код использовал segue. При попытке отладить это я отошел от segue, чтобы использовать instantiateViewControllerWithIdentifier и [self.navigationController pushViewController:myVC animated:YES];. Оба подхода работают на iOS 7, как ожидалось. Однако, независимо от того, что я делаю, я не могу получить толчок для работы на iOS 8, ничего не происходит вообще, как если бы навигационный контроллер nil или что-то, когда это не так!

Любые идеи?

+0

Вы пытались NSLog «viewDidLoad» VC, который должен появиться? он уволен? – r4id4

+0

@ObiWanKeNerd Просто добавил перерыв в 'viewDidLoad'. При запуске на iOS 8 'viewDidLoad' вызывается * not *. –

+0

Вы пытались использовать свой первый метод 'performseguewithidentifier', но используя' modal segue' вместо 'push segue'? просто проверьте, не является ли это проблемой, связанной с «навигационным контроллером» или с «viewController», который должен быть представлен. И у вас есть метод «подготовиться к segue»? Вы пытались вставить перерывы там? – r4id4

ответ

2

Мое положение похоже на ваше.

У меня есть VC с именем InventoryMatrixEditViewController, и он представлен настраиваемой модальной презентацией. И в этом VC есть метод, вызываемый in - (void) viewDidLoad; настроить расположение:

- (void)_setupLayout 
{ 
    if (_isToCreateNewMatrix) { 
     //[self.view addSubview:self.attributesTableViewController.view]; 
     [self.attributesTableViewController addNewAttributeItem]; 
     [self.navigationController pushViewController:self.attributesTableViewController 
              animated:Yes]; 
     return; 
    } 
.... 

если анимированный флаг Да, иногда viewDidLoad толкаемого зрения (self.attributesTableViewController) не будет называться (как ни странно, не каждый раз, когда будет вызвана ошибка), но приложение не разбился, просто введите пустой modalView и даже navigationBar не установлен.

Но если анимированный флаг НЕТ, все в порядке.

Интересно, является ли это ошибкой или Apple просто подталкивает людей не активировать анимацию, если представление сначала представлено модально.

+1

. Это не ответ – MrTJ

+0

Это не сформулировано как ответ, но установка анимированного флага в NO определенно работает для iOS 8 (где существующий код работает для iOS 7). – richsage

Смежные вопросы