Все еще новичок в программировании на iOS, и, несмотря на обилие исследований, я столкнулся с другим препятствием.
То, что я хочу реализовать:
Я хочуUITabBarController, который загружается при переходе от основного интерфейса.Я также хотел бы использовать NIB для определения его свойств.
Все примеры, которые я могу найти, помещают UITabBarController в AppDelegate, но я не хотел бы загружать его, пока он не будет использован.Я также не знаю, будут ли все UIGestureRecognizer оставаться активными, если я просто сделаю это модально (я не могу получить рабочую реализацию).
Что у меня есть
Сначала я загружаю начальный вид загрузки из AppDelegate
AppDelegate.h
@class InitialViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;
@end
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[InitialViewController alloc] initWithNibName:@"InitialViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
С этой точки зрения, поскольку я просто создаю каркас пользовательского интерфейса, у меня есть две кнопки, одна из которых предназначена для основного интерфейса, а другая - для UITabBarController..
InitialViewController.h
@interface InitialViewController : UIViewController
- (IBAction)toMain:(id)sender;
- (IBAction)toTabs:(id)sender;
@property (strong, nonatomic) UIViewController *mviewController;
@property (strong, nonatomic) UIViewController *tviewController;
@end
InitialViewController.m
- (IBAction)toMain:(id)sender {
self.mviewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[[[UIApplication sharedApplication] delegate] window].rootViewController = self.mviewController;
}
- (IBAction)toTabs:(id)sender {
self.tviewController = [[tabViewController alloc] initWithNibName:@"tabViewController" bundle:nil];
[[[UIApplication sharedApplication] delegate] window].rootViewController = self.tviewController;
}
При загрузке MainViewController он ведет себя так, как я хочу.Но когда я загружаю вид вкладок, я получаю одну длинную вкладку внизу и черный фон.Я могу добавить в viewdidload такие вещи, как изменение цвета фона, но нет реальных вкладок или представлений, связанных с вкладками в XIB.
Я подозреваю, что мне чего-то не хватает в двух областях: на вкладке .h и некоторых ссылках, связанных с этим в конструкторе интерфейса.Или недостаточно установить новый rootViewController.
tabBarController.h
#import <UIKit/UIKit.h>
@interface iPodViewController : UITabBarController <UITabBarControllerDelegate>
@end
Если кто-то может указать мне правильное направление и / илиПокажите мне реализацию, которая работает, я был бы очень признателен.
- как примечание, когда я захожу в tabbar.xib и использую редактор помощника, он открывает InitialViewController.h -