Я не могу понять, что я делаю не так, у меня есть другие посты об этом, но они, кажется, связаны с более четко сформулированным случаем, в моей ситуации все кажется очень простым, но все же это не работает .
В моем AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MyViewController *vc = [[MyViewController alloc] init];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:vc];
// Instantiate the window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = navigationController;
// Show the window
[self.window makeKeyAndVisible];
return YES;
}
В MyViewController.m (нет файла xib)
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"self.navigationController %@", self.navigationController);
}
Результат этого:
2012-02-26 22:41:19.366 Test [4488:15203] self.navigationController (null)
EDIT
Итак, я почти понял, но не понял причину.
Прежде всего, чтобы лучше определить, мои контроллеры представления были UITableViewControllers, и проблема, очевидно, связана с настройкой метода initWithStyle, которую я сделал:
- (id)init
{
self = [self initWithStyle:UITableViewStyleGrouped];
return self;
}
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
[[self tableView] setBackgroundColor:kTableViewBackgroundColor];
[[self tableView] setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
}
return self;
}
Если я закомментирую две строки внутри if, то есть, если я сделаю:
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
//[[self tableView] setBackgroundColor:kTableViewBackgroundColor];
//[[self tableView] setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
}
return self;
}
self.NavigationController создается должным образом, в противном случае это не так. Может кто-нибудь объяснить мне, почему это происходит?