2012-05-30 4 views
1

Я осмеливаюсь, как я могу создать NSMutableArray из viewcontrollers.NSMutableArray ViewControllers

Затем, когда я имел этот массив, как я мог бы использовать его в методе, который определяет левое и правое UIgesture пойла анимировать и вне поля зрения ...

это метод, который набирает свои жесты, которые просто анимация между двумя представлениями, однако я хотел бы оживить между таким количеством просмотров, которые находятся в массиве контроллеров представлений.

- (void)swipedScreen:(UISwipeGestureRecognizer*)gesture { 
    //Left swipe 
    if (gesture.direction == UISwipeGestureRecognizerDirectionLeft) { 

     [UIView animateWithDuration:0.25 animations:^{ 
      [self.detailViewB.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
      [self.detailViewA.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    }]; 

    } 
    //Right swipe 
    else if (gesture.direction == UISwipeGestureRecognizerDirectionRight){ 

     [UIView animateWithDuration:0.25 animations:^{ 
      [self.detailViewA.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
      [self.detailViewB.view setFrame:CGRectMake(320, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
     }]; 

    } 
} 

как сторона у меня есть контроллер мастер вид, что я погрузкой этих viewcontrollers в качестве подвидов ... ну, по крайней мере тот план .. Im в настоящее время делает это с видом ...

http://dl.dropbox.com/u/53813770/SMPrototypeB.zip

ОБНОВЛЕНО:

вот график, показывающий вам, ребята, что я пытаюсь для того чтобы достигнуть.

enter image description here

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

DetailViewController *DVCA = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]]; 
DetailViewControllerB *DVCB = [[DetailViewControllerB alloc] initWithNibName:@"DetailViewControllerB" bundle:[NSBundle mainBundle]]; 
DetailViewControllerC *DVCC = [[DetailViewControllerC alloc] initWithNibName:@"DetailViewControllerC" bundle:[NSBundle mainBundle]]; 

//Create Array of views 
viewArray = [NSArray arrayWithObjects:DVCA, DVCB, DVCC, nil]; 



// set detail View as first view 
UIViewController *recordController = [viewArray objectAtIndex:0]; 
// This was the bit causing me so many issues. 
[self.view addSubview:recordController.view]; 
+0

Если ваш контроллер начального представления является навигационным контроллером, тогда ОС дает вам массив, который вы ищете, это свойство viewControllers в UINavigationController. Это неизменно, но вы можете сделать изменчивую копию. – geraldWilliam

ответ

0

Я woundering, как я мог бы создать NSMutableArray из viewcontrollers.

Точно так же, как вы бы создать любой другой массив объектов:

  1. Создание объектов.

  2. Поместите их в массив.

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

+0

Я обновил свой вопрос диаграммой того, чего я пытаюсь достичь, поэтому я не могу это сделать в массиве, потому что я хочу, чтобы MainViewController отображал представления в массиве в виде subviews. –

0

Рассматривая ваш проект и видя, что ваш контроллер корневого представления на самом деле является навигационным контроллером, я переписываю его как ответ.

Если ваш контроллер начального вида является навигационным контроллером, тогда ОС предоставляет вам массив, который вы ищете, это свойство viewControllers в UINavigationController. Это неизменно, но вы можете сделать изменчивую копию.

+0

Причина, по которой я хочу создать новый NSMutableArray ViewControllers - это то, что я настраиваю функцию прокрутки на этом уровне навигационного контроллера .. потому что на этом уровне стека навигации я хочу отобразить кучу данных, которые я не могу сделать на одном представлении, поэтому вместо этого для загрузки большего количества просмотров в стек я хочу, чтобы пользователь мог прокручивать между кучей представлений, которые находятся в mutableAreray на этом уровне стека. Затем, как только они будут сделаны, они смогут вернуться к тому, что они хотят стек ... –

0

Как насчет использования UIScrollView из окна, чтобы получить тот же эффект? Он поддерживает прокрутку в нескольких направлениях, сэкономит все накладные расходы на разработку нового элемента управления, и вам не придется беспокоиться о нарушении каких-либо рекомендаций HIG.

+0

Как вы думаете, я нарушаю руководство HIG? –

+0

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

+0

Да, я думаю, что пошла бы по этой дороге, если бы мне не нужно было контролировать каждое представление, которое я буду использовать, так как будет много разных данных, которые я хочу отображать, из прокрутки UIWbviews и только собственных элементов управления интерфейсом и т. Д. , и наличие viewcontroller для каждого представления поможет сохранить все в порядке, я думаю .. но приветствует рекомендацию, возможно, это то, с чем я буду сталкиваться в будущем и тестировать, например, я делаю сейчас, когда мнения хранятся в массивы. –

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