0

我只是想清除的東西了..諮詢與標籤欄和導航欄

我有一個應用程序在主窗口界面有3個標籤頁標籤欄(OPT1,OPT2,OP3)。每個選項都有自己的xib文件,我已經繪製了自己的界面。

在我的應用程序委託類我已經包含中的UITabBar一樣* rootController,在我的主窗口XIB文件迷上這個了我的標籤欄。

現在..在標籤欄,我已經在拖動3個導航控制器(1對於每個優化)和每一個內我有1)選項卡欄圖標,2)導航欄和3)的視圖控制器。

返回我的應用程序delegate.h類我已經包含了UINavigationController * nav1,nav2,nav3 ...的代碼,並在IB中將它們連接到MainWindow.xib(TabBar-> navController1,navController2,navController3)。

這是正確的做法嗎?另外,如何在我的opt1,opt2,opt3類文件中使用這些抓取條?

這裏是我的代碼: 應用delegate.h

#import <UIKit/UIKit.h> 

@class LoginViewController; 

@interface myAppDelegate : NSObject <UIApplicationDelegate> 
{ 

UIWindow *window; 
UINavigationController *navigationController1, *navigationController2,  *navigationController3; 
IBOutlet UITabBarController *rootController; 

} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController1, *navigationController2, *navigationController3; 
@property (nonatomic, retain) IBOutlet UITabBarController *rootController; 

@end 

appdelegate.m

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
[window addSubview:[rootController view]]; 
[window makeKeyAndVisible]; 

LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 
[self.rootController presentModalViewController:loginViewController animated:NO]; 

} 

然後在我的LoginController.m類,當用戶輸入正確的憑據我打電話

[self dismissModalViewControllerAnimated:YES]; 

在我的MainWindow.xib中,我將我的rootController連接到TabBarCont滾筒。在TabBarController中,我已經將3個NavigationControllers放入其中並將它們鏈接到3個tabOption類,每個類都有自己的.xib視圖。

標籤欄3個選項視圖之間切換很好。然而,在1 .xib視圖中,我有一個按鈕來打開一個新的.xib。所以在我的tabOption1類我有以下幾點:

-(IBAction)openBook:(id)sender{ 

UIViewController *nextVC = [[PageViewController alloc] initWithNibName:@"PageView" bundle:nil]; 
[self.navigationController pushViewController:nextVC animated:YES]; 
} 

然而,這並不打開了我的PageView.xib ......我把它連接到我的PageViewController階級和一切too..and按鈕的作品,因爲我VE具有UIDialog

+0

不確定您的問題在這裏?是不適用於您的應用程序。你所描述的似乎是做你需要的一個好方法。如果你需要更多的幫助,如果你啓動XCode並選擇一個新的Tab Bar Controller項目,那麼它會給你樣本佈局和各種幫助你。 – 2012-01-05 15:22:53

+0

我只是想要一些保證。它的工作原理...但例如說,我在我的opt1用戶界面中創建一個按鈕,並且此按鈕鏈接到一個新的視圖。如何在我的opt1類中訪問navcontroller(在我的應用程序委託中聲明),並告訴它導航到其他新視圖?我只是沒有得到我如何在opt1,opt2,opt3類... – user859348 2012-01-05 15:40:36

回答

1

你見過蘋果的編程指南測試它?他們可能會給你一個更好地瞭解如何一切聯繫在一起 - 你可以從這裏開始:

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html#//apple_ref/doc/uid/TP40007457-CH103-SW1

在回答你的問題,看起來像設立的確定方式。我真的會建議雖然讀了一下:)

+0

感謝您的鏈接工作navControllers。我會通讀這一點,看看我是否拿起任何新的東西:) – user859348 2012-01-05 15:41:08

0

在回答您的評論,看起來像一個合理的方式做你想要達到的目標。如果它有效,那麼它就可以工作。

在回答您的其他問題,那麼你可以這樣做,得到的導航控制器對象:self.navigationController

所以,你可以在「去」這樣一個新的視圖控制器:

// make the view controller 
UIViewController *nextVC = [[MyCustomViewController alloc] initWithNibName:@"MyCustomViewController" bundle:nil]; 

// push it onto the navigation stack 
[self.navigationController pushViewController:nextVC animated:YES]; 

要添加這對於一個按鈕上的click事件,您需要在界面構建器中創建按鈕並在代碼中創建IBActionIBAction可能如下所示:

- (IBAction)pushNextViewController:(id)sender { 
    UIViewController *nextVC = [[MyCustomViewController alloc] initWithNibName:@"MyCustomViewController" bundle:nil]; 
    [self.navigationController pushViewController:nextVC animated:YES]; 
} 

然後,您需要從界面構建器鏈接到它。我不知道如何做到這一點,我一般不使用界面生成器,當然因爲有關的XCode沒有用它3.

要做到這一點,你編程可以使用這個方法:

[MyButton addTarget:self selector:@selector(pushNextViewController:) forControlEvents:UIControlEventTouchUpInside]; // always use touch up inside 

查找關鍵字,以幫助您在互聯網上找到教程和內容:ibaction uinavigationcontroller pushviewcontroller:animated:popviewcontrolleranimated:

+0

感謝您的全面解釋。我知道你使用self.navigationController來訪問導航控制器,但是如果我在我的MainWindow.xib(每個標籤欄視圖有1個控制器)中有3個控制器,那麼它是如何知道它正在訪問哪個控制桿?另外由於某種原因,我不能使用創建UIViewController實例的代碼來切換視圖。按鈕已鏈接,因爲我已經用UIDialog消息對其進行了測試.. – user859348 2012-01-06 17:00:22

+0

我忘記了我的指針,我將編輯問題,這是可能是問題。當你在一個視圖控制器中(例如'viewDidLoad'方法),那麼'self.navigationController'只會訪問視圖所附的導航控制器,如果你明白的話。 – 2012-01-06 17:05:00

+0

如果你的意思是這個指針(UIViewController * nextVC),那麼我已經試圖讓它編譯..所以我不知道它爲什麼不工作。 – user859348 2012-01-06 17:15:03