загружать viewcontroller, но не отображать его - PullRequest
0 голосов
/ 05 января 2012

У меня проблема с отображением View Controller при вызове перехода из кода в приложении для iPad.

У меня есть настройка перехода в IB путем перетаскивания Ctrl с одного контроллера представления на другой с

Идентификатор: viewDocumentSegue , Стиль: Модальный , Презентация: По умолчанию , Переход: По умолчанию

I 'm затем вызывает segue из первого контроллера представления, используя

[self performSegueWithIdentifier:@"viewDocumentSegue" sender:nil];

и передавая переменную во второй контроллер представления, используя

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destination = segue.destinationViewController;

    if ([destination respondsToSelector:@selector(setFileURL:)]) {
        [destination setValue:fileName forKey:@"fileURL"];
    }
}

Второй контроллер представления загружается, как NSLogsУ меня в viewDidLoad viewWillAppear и viewDidAppear отображается в консоли, но ничего не отображается.

Я думаю, что представление второго контроллера представления находится где-то в иерархии представлений,Но как мне заставить его наверх?

Редактировать

Вот скриншот интерфейса (некоторые вещи должны быть затемнены).Я добавил несколько заметок, объясняющих структуру.Надеюсь, это поможет.

(я пока не могу загрузить изображения, вот ссылка) http://www.linfoots.com/Screenshot.jpg

Есть предложения?

Спасибо,

Ричард

1 Ответ

2 голосов
/ 05 января 2012

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

РЕДАКТИРОВАТЬ:

Хорошо, спасибо за снимок экрана.Похоже, вы пытаетесь использовать раскадровку в связи с родительским контроллером представления, как я и предполагал во втором комментарии.Это не легко, потому что раскадровка ничего не знает о потомках вашего родительского контроллера представления.Вы будете намного счастливее, если будете использовать несколько раскадровок или вообще не будете раскадровок.

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

http://www.apeth.com/iOSBook/ch19.html#_container_view_controllers

Вы должны каждый раз исполнять этот сложный танец, иначе все пойдет не так:

Когда контроллер представления должен стать дочерним элементом вашего родительского контроллера представления:

  • Вы вызываете addChildViewController: на своем родительском контроллере представления.Дочерний объект автоматически добавляется в массив childViewControllers родителя, который сохраняет его.
  • Вы получаете представление дочернего контроллера представления в свой интерфейс, если это означает, что добавление дочернего контроллера представления означает.
  • Вы отправляетеdidMoveToParentViewController: дочернему элементу с родительским контроллером представления в качестве аргумента.

Когда контроллер представления перестает быть дочерним элементом вашего родительского контроллера представления:

  • Вы отправляете willMoveToParentViewController:дочернему элементу с аргументом nil.
  • Вы удаляете представление дочернего контроллера представления из своего интерфейса, если это означает, что удаление дочернего контроллера представления означает.
  • Вы отправляете removeFromParentViewController дочернему элементу.Дочерний объект автоматически удаляется из родительского массива childViewControllers, который его освобождает.

Наконец, когда вы делаете модальный переход, definesPresentationContext в вашей родительской цепочке становится критически важным, так что модальное представление знает, какое представлениезаменить в интерфейсе.Этот загружаемый пример из моей книги демонстрирует необходимые различия:

https://github.com/mattneub/Programming-iOS-4-Book-Examples/tree/master/convertedToIOS5/p476containerController2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...