2012-02-12 2 views
0

Несмотря на количество похожих сообщений по этому вопросу, у меня все еще есть проблемы с правильной работой. У меня есть два UIViewControllers, которые я разработал в IB с UILabels и изображениями и т. Д. Я хотел бы добавить их в список прокрутки, чтобы их можно было переадресовать между ними.Добавление представлений viewController в UIScrollView

У меня есть выходы, определяющие подключение каждого из scrollViewcontrollers со своими элементами в IB, однако сами контроллеры я программно создаю из контроллера главного представления в viewDidLoad. После их создания я назначаю некоторые значения из контроллера главного представления, а не добавляю его в качестве подсмотра в scrollViewController. Однако ничего не отображается. Из отладки, которую я выполнил, когда я установил точку прерывания после назначения значений, я вижу, что элементы равны нулю. Они должны быть загружены из файла xib, но, похоже, не читаются. Даже в качестве теста я попытался инициализировать один из элементов (например, UILabel) и установить его на этот контроллер подвид, но он ничего не отобразил. Вот немного кода, чтобы объяснить немного лучше.

В контроллере Master View

detailControllerA *tempA = [[detailControllerA alloc] initWithNibName:@"detailOverviewA" bundle:nil]; 
    self.overviewA = tempA; 
[tempA release]; 
self.overviewA.someLabel.text = @"Some Text"; 
    detailScrollView.contentSize = CGSizeMake(scrollWidth, scrollHeight); 
    detailScrollView.pagingEnabled = YES; 

[detailScrollView addSubview:self.overviewA.view]; 

В реализации detailControllerA я установить раму в loadView:

-(void)loadView { 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 90)]; 
    self.view = view; 
    [view release]; 

} 

Я также этикетки и т.д., определенный с IBOutlets в detailControllerA.h и реализованы к элементам в файле xib.

Любые идеи, почему xib неправильно загружается при создании программно?

+0

Я предполагаю, что вам нужно вызвать [super loadView], прежде чем что-либо делать. Несмотря на то, что вы загрузили из nib, я уверен, что loadView по-прежнему является тем, что требуется для создания вашего представления в контроллерах. –

+0

По-прежнему не повезло :( – taylormade201

+1

Я понял, . Интересно, что проблема - (void) loadView была проблемой. Поскольку представление создается в построителе интерфейса (с настройками фрейма), когда loadView запускается, он создавал новый вид, сдувая тот, который был создан в построителе интерфейса. – taylormade201

ответ

2

Try таким образом:

 NSUInteger scrollContentCount = 0; 

     for (NSUInteger arrayIndex = 0; 
      arrayIndex < [contents count]; 
      arrayIndex++) { 


     // set scorllview properties 
     CGRect frame; 
     frame.origin.x = self.mScrollView.frame.size.width * arrayIndex; 
     frame.origin.y = 0; 
     frame.size = self.mScrollView.frame.size; 

     myScrollView.autoresizingMask = YES; 

     // alloc - init PODetailsView Controller 
     myController = [[MyController alloc] initWithNibName:@"MyController" bundle:[NSBundle mainBundle]]; 

     [myController.view setFrame:frame]; 

     // add view in scroll view 
     [self.myScrollView addSubview:myController.view]; 

     scrollContentCount = scrollContentCount + 1; 
    } 

// set scroll content size 
self.myScrollView.contentSize = 
    CGSizeMake(self.myScrollView.frame.size.width * scrollContentCount, 
         self.myScrollView.frame.size.height); 
} 

Не отпускайте объект контроллера контента, который находится в для цикла.

Надеюсь, это было бы полезно для вас.

0

Интересно, что проблема - (void) loadView была проблемой.

Поскольку представление создается в построителе интерфейса (с настройками фрейма), когда возникает loadView, он создает новый вид, сдувая тот, который создается в построителе интерфейса.