Советы с Tab Bar и Nav Bar - PullRequest
       1

Советы с Tab Bar и Nav Bar

0 голосов
/ 05 января 2012

Я просто хотел бы кое-что прояснить ..

У меня есть приложение, в котором интерфейс главного окна имеет панель вкладок с 3 вкладками (opt1, opt2, op3).У каждого opt есть свой собственный 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?

Вот мой код: app 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 к TabBarController.В TabBarController я поместил в него 3 элемента NavigationController и связал их с 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 и все тоже ... и кнопка работает, потому чтоЯ проверил это с помощью UIDialog

Ответы [ 2 ]

1 голос
/ 05 января 2012

Вы видели руководства по программированию Apple? Они могут дать вам лучшее понимание того, как все связано друг с другом - вы можете начать здесь:

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

В ответ на ваш вопрос это выглядит как нормальный способ настройки. Я действительно рекомендовал бы читать немного, хотя:)

0 голосов
/ 05 января 2012

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

В ответ на другую проблему, вы можете получить объект контроллера навигации, выполнив следующее: 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 на кнопке, вам нужно создать кнопку в конструкторе интерфейса и создать IBAction в своем коде.IBAction может выглядеть следующим образом:

- (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:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...