2014-01-30 2 views
0

Я тестирую что-то, что хотел бы иметь в своем приложении. У меня есть UiViewController в раскадровке с UIScrollView - теперь я хочу добавить другие viewControllers в этот scrollView и пронести между ними.UIScrollView and Storyboard

Я хотел бы добавить представление, которое я сделал в раскадровке в этом UIScrollView. Является ли это возможным?

Я пытался что-то вдоль линий:

MYViewController *viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"]; 

    [self.scrollView addSubview:viewOne.view]; 

Я установил размер Scrollview быть больше, чем экран, и когда основной вид нагрузка, я могу видеть, что есть вид прокрутки (полосы прокрутки показывают), но мой viewController не находится внутри него.

У кого-нибудь есть идеи?

ответ

0

Я нашел проблему:

Я не выделяя и инициализации моего ViewController. По электронной почте Ой.

Это правильный код:

BaseViewController *viewOne = [[BaseViewController alloc]init]; 
    viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"]; 
    [self.scrollView addSubview:viewOne.view]; 
1

код вы вывесили еще не так, на пару уровней.

Во-первых, вы не должны использовать alloc/init для контроллеров представлений. Вам необходимо либо использовать initWithNibName:bundle: (для создания контроллера вида из файла nib), либо instantiateViewControllerWithIdentifier: для загрузки контроллера вида из раскадровки.

Во-вторых, вы не должны добавлять представление контроллера представления в качестве подсмотра другого контроллера представления, если вы не используете поддержку контроллера родительского/дочернего представления, которая была добавлена ​​в iOS 5 и значительно улучшена в iOS 6. Если вы делаете то, что вы то всевозможные вещи будут работать некорректно: автоматическое вращение, предупреждения о низкой памяти, оповещения фона и т. д. Список вещей, которые могут пойти не так, неограничен.

Самый простой способ сделать это - добавить контейнерный вид в виде рамки для хранения контроллера дочернего представления, а затем перетащить управление из вида контейнера на сцену, которую вы хотите настроить в качестве дочернего. Это заставляет IB настраивать и «Встраивать» segue. Встраивайте segues во все домашние хозяйства, в которых вам нужно размещать содержимое одного контроллера контроллера в другом, без необходимости в коде.

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

+0

Hi Duncan, См. Мой предыдущий вопрос SO: http://stackoverflow.com/questions/21453513/using-one-instance-of-a-viewcontroller-class-in-storyboard/21453949?noredirect=1#comment32374767_21453949 Я, хотя UiScrollView будет легче получить эффект, который я искал? – Tander

+0

Чтобы добавить: мне нужен прокрутка, чтобы я мог прокручивать между представлениями, в которых я нуждался, и использовать сегментный контроль o прямо на вид, который нужен пользователю. – Tander

+0

Tander. То, что вы действительно должны делать, это использовать UIPageViewController. Это делает все, что вы хотите, и гораздо более аккуратно, чем то, что вы пытаетесь сделать. Вы можете настроить его для прокрутки между страницами или зависания страницы. Вы также можете легко добавить элемент управления страницы, который позволяет пользователю нажать, чтобы переключиться, а контроллер просмотра страниц управляет элементом управления страницей. Гораздо чище и более знакомый пользовательский интерфейс. –

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