Переключение между представлениями в iOS - PullRequest
1 голос
/ 03 августа 2011

Я делаю свое первое приложение для iOS, оно для iPad. Это игра на запоминание. Он имеет титульную страницу с несколькими опциями и в зависимости от выбранной опции отправляет вам другую страницу / вид. По всему приложению пользователь будет путешествовать по разным страницам / просмотрам. Весь интерфейс для приложения будет выполнен на заказ, поэтому я хочу иметь панели навигации или что-нибудь еще. Я использую xCode 3.2.5. Я создал представления в конструкторе интерфейса. И я приложил титульную страницу к приложению, поэтому после заставки она появляется.

Как мне переключаться между представлениями?

Спасибо за любую помощь, которую вы можете оказать мне.

Редактировать 1:

Вот код, который мне кажется уместным

Это файл AppDelegate.m, я пропустил методы, которые не редактировал

@synthesize coverController=_coverController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Override point for customization after application launch.
cover *aCoverController = [[cover alloc] initWithNibName:@"cover" bundle:nil];
self.coverController = aCoverController;
// Or, instead of the line above:
// [self setcover:aCoverController];
[aCoverController release];

self.window.rootViewController = self.coverController;
[self.window makeKeyAndVisible];

return YES;
}

- (void)dealloc {

[managedObjectContext_ release];
[managedObjectModel_ release];
[persistentStoreCoordinator_ release];
[_coverController release];

[window release];
[super dealloc];
}

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Хорошо. Во-первых, вы можете быть немного яснее о том, что вы хотите.

Исходя из того, что я получил, вы не ищете навигацию в / из контроллеров, у вас просто есть несколько видов, подготовленных для вашего RootViewController, и затем вы хотите переключаться между ними.

Контроллер навигации используется, когда у вас есть последовательный поток представлений, как при переходе от view1 «ведет к» view2 и так далее. например, книга контактов -> contactDetails -> editContact -> и так далее.

Но в вашем случае кажется, что представления / страницы разделены и не имеют никакой связи, поэтому не будет никакого последовательного потока, а будет случайный поток, скажем, view1 -> view5 -> view2 ->. .

Если это так, если вы уже создали представления, вам просто нужно соединить каждое из них с их parentController (coverController в вашем случае).

Самый простой способ - скажем, у вас есть 3 вида, вид1, вид2, вид3, каждый из которых имеет 1 или более кнопок для переключения ч / б видов. Одним из способов было бы иметь ссылку на coverController в каждом из представлений. Возможны более изящные методы, но этот 1 будет самым простым для понимания и реализации.

Итак, в view1.h (добавьте их):

import "cover.h"

@class cover;

@interface view1 : UIView {

cover *coverController;
}

@property(nonatomic, assign)cover *coverController;

@end

А в cover.h добавить

import "view1.h"

@class view1;

@interface cover : UIViewController{

 IBOutlet view1 *firstView;
}

@property(nonatomic, retain) IBOutlet view1 *firstView;

@end

Наконец в cover.m добавить

@implementation cover

@synthesize view1;

и в методе viewDidLoad в cover.m добавьте 2 строки

self.view1.frame = CGRectMake(0,0,768,1024); //set whatever frame you want

self.view1.coverController = self;   //concept of reference-paring  

И готово.

в методе view1ButtonPressed для view1 -

-(IBAction)view1ButtonPressed{

 // remove the current view from the superview

 [self removeFromSuperView];

 //go to superView, to load anotherview

 [coverController view1ButtonWasPressed];

}

в cover.m:

-(void)view1ButtonWasPressed{

 //after doing the same process for view2

 [self.view addSubview:view2];
}

Если вы установили правильные соединения, в ваших файлах nib вы добьетесь того, что намеревались делать.

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

Существует только 1 контроллер и множество представлений, и мы переключаемся в ч / б эти представления.

0 голосов
/ 03 августа 2011

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

Я играл разными способами, и это просто неСтоит усилий.Я настоятельно рекомендую навигационный контроллер.

Этот урок помог мне разобраться с ним, но попробуйте поискать в Google, что лучше всего подходит для вас.

...