使用UINavigationController
時我有點問題。當使用pushViewController時,UINavigationController變爲空
我有一個第一ViewController (called LaunchViewController)
與導航控制器(即正常工作),我可以使用pushViewController
顯示second ViewController (called SettingViewController)
和正常工作過,但是當(從第一個視圖控制器)我想顯示第三ViewController (called IPhonePage),
後該視圖顯示,當我想在我的IPhonePage
使用navigation controller
,該navigation controller
是null...
不知道是不是我的問題是清楚的,我可以告訴你我用做代碼:
AppDelegate.m :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
LaunchViewController* controller = [[LaunchViewController alloc] initWithNibName:@"LaunchViewController" bundle:nil];
_navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
_navigationController.navigationBar.tintColor = [UIColor blackColor];
[self.window setRootViewController:_navigationController];
[self.window makeKeyAndVisible];
return YES;
}
LaunchViewController.m :
- (IBAction)showSettings:(id)sender {
SettingViewController* controller = [[SettingViewController alloc] initWithNibName:@"SettingViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
}
這工作正常(我可以訪問navigation controller
在SettingViewController)
但對此,
LaunchViewController.m :
- (void)ShowPageWithIMDevicePage:(id<IMDevicePage>)page {
[self.navigationController pushViewController:(UIViewController*)page animated:YES];
}
頁面創建:
- (id<IMDevicePage>)CreatePage {
return [[IPhonePage alloc] init];
}
而且我IPhonePage類看起來像這樣,
IPhonePage.h:
@interface IPhonePage : UIViewController <IMDevicePage>
IPhonePage.m:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"navigation controller = %@", self.navigationController);
}
而日誌顯示導航控制器=(空),例如我無法訪問navigation controller.
我真的很希望有人能夠理解我想要的東西,我知道這有點複雜,但這是因爲我以這種方式做出的特定原因。
謝謝!乾杯:)
編輯 其實這是因爲我創建的頁面,我設置之類的標題,內容和工具欄不同的東西,然後我打電話pushViewController
,奇怪的是,我有一個設置方法的UIViewController中
IPhonePage.m
- (void)SetContentWithIMDeviceControl:(id<IMDeviceControl>)content {
self.view = (UIView*)content;
}
而且它不叫了我的viewDidLoad方法後的內容(任何線索?)。 我也有它的作用是在視圖
- (void)SetApplicationBarWithIMDeviceApplicationBar:(id<IMDeviceApplicationBar>)appBar {
}
起初我想用導航控制器來設置此工具欄的底部添加工具欄的方法,但由於這種方法是在pushViewController
方法之前調用,導航控制器是零。 有沒有可能在不致電pushViewController
的情況下手動設置導航控制器?或者任何其他方式來添加工具欄?像聲明一個工具欄並將其添加爲子視圖可能?
既不適用也不適用 – EdRbt
會發生什麼情況?它做什麼?它推動了一個白頁? 嘗試NSLog你的IPhonePage的東西。像NSLog(@「測試iphone頁面:%@」,page.testable_attribute),並告訴我們日誌看起來是否正確。 – Seb
它顯示內容(一個UITableView),它設置標題,所以它的工作。我只是無法訪問導航控制器... – EdRbt