Переход от контроллера представления, встроенного в представление контейнера

В моем приложении есть UIViewController, встроенный в UINavigationController. Внутри UIViewController есть представление контейнера. Я подключаю это представление контейнера к UITableViewController, тем самым встраивая его в представление контейнера. Все в порядке до сих пор.

Теперь, когда я подключаю этот UITableViewController к новому UIViewController, используя push-переход (мы все еще находимся в представлении навигации) в раскадровке, размер новой сцены UIViewController становится таким же, как размер представления контейнера. Я думаю, это ожидаемо, но есть ли способ не допустить этого. Я хочу, чтобы остальные сцены были в нормальном размере. Кроме того, он работает довольно хорошо и, как и ожидалось, при работе в симуляторе. Проблема с размером касается только раскадровки.

Просто объясняю мой контроллер - просмотрите иерархию здесь:

UINavigationController 
  -> UIViewController ( Initial View Controller )
    -> Container View 
      -> UITableViewController ( Embed Segue ) 
        -> UIViewController ( Push Segue ) 

Есть ли способ, чтобы последняя UIViewController и оставшиеся сцены подключенного контроллера имели нормальные размеры в раскадровке?


person Sunil    schedule 31.03.2014    source источник
comment
Значит проблема только при просмотре раскадровки? Контроллер представления имеет параметр размера моделируемой метрики (по умолчанию он выводится). Вы пробовали это изменить?   -  person Tiago Lira    schedule 31.03.2014
comment
У меня обратная проблема. Я хочу, чтобы мой segue'd view соответствовал размеру контейнера, в котором он находится!   -  person Chucky    schedule 22.06.2016


Ответы (2)


Вот одно из решений: создайте ручной переход от начального контроллера представления к желаемому месту назначения. Это предотвратит путаницу в раскадровке и указание адресата неправильного размера (и других предполагаемых показателей). К сожалению, поскольку это ручной контроллер представления, вам придется выполнить переход в коде из встроенного контроллера представления, выполнив что-то вроде этого:

[self.parentViewController.parentViewController performSegueWithIdentifier:@"MySegue" sender:self];
person vocaro    schedule 12.04.2014

Начиная с Xcode 7 (я не уверен, что это относится к предыдущим версиям):

  1. Выберите контроллер представления, встроенный в представление контейнера.
  2. In the Attributes Selector, there are five drop downs at the top under Simulated Metrics.
    • Set Size to Master
    • Установите Status Bar на Default
    • Установите Top Bar на Translucent Navigation Bar
  3. Теперь перетащите UINavigationItem на ваш контроллер представления.

Это даст вам контроллер представления правильного размера и панель навигации для редактирования.

person Ryan    schedule 13.10.2015