Хорошо. Во-первых, вы можете быть немного яснее о том, что вы хотите.
Исходя из того, что я получил, вы не ищете навигацию в / из контроллеров, у вас просто есть несколько видов, подготовленных для вашего 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 контроллер и множество представлений, и мы переключаемся в ч / б эти представления.