2013-09-19 3 views
4

Я меняю макет существующего приложения. Существует ряд представлений, которые теперь нужно добавить в scrollview, которые пользователи могут использовать для перехода к следующему экрану. Я добавил контроллеры в scrollview, используя приведенный ниже код.Добавление UIViewcontrollers в UIScrollview

Этот код добавляется в viewDidLoad из ViewController, который удерживает UIScrolliew

.

int i=1; 
int width = 0,height=0; 
for(POTCTask *task in [CommonData tasks]) 
{ 
    UIViewController<TaskViewController> *controller = [TaskViewFactory getTaskViewController:(task.inputTypeId)]; 
    width = controller.view.frame.size.width; 
    height = controller.view.frame.size.height; 
    controller.view.frame = CGRectMake(width*(i-1), 0, width, height); 
    [self.scrollView addSubview:controller.view]; 
    i++; 
} 
self.scrollView.contentSize = CGSizeMake(width*i, height); 

Он загружает все виды в порядке. Но только viewDidLoad вызывается в каждом диспетчере представлений. Никакие другие методы не вызываются. Некоторые из них имеют UItableviews. Но его показывается только первая ячейка.

Как я могу сделать это правильно в ios?

Благодаря

+0

Другие методы не вызываются, потому что вы не нажимаете viewController в стек. Вы просто создаете ViewController и добавляете его в UIScrollView. –

ответ

7

Я считаю, что ваша проблема в том, что вы не добавляете эти контроллеры просмотра, как дети контроллера, который содержит ваш Scrollview. В руководстве по программированию View Controller Apple, они обеспечивают этот пример для добавления контроллера ребенок:

[self addChildViewController:content]; 
content.view.frame = [self frameForContentController]; 
[self.view addSubview:self.currentClientView]; 
[content didMoveToParentViewController:self]; 

и этот для удаления одного:

[content willMoveToParentViewController:nil]; 
[content.view removeFromSuperview]; 
[content removeFromParentViewController]; 

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

Я считаю, что это вызовет дополнительные методы для запуска.

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