2011-10-14 31 views
9

trong viewController tôi, tôi có một nút, khi nhấn nút, nhập các navigationController, mã của tôi như:self.navigationController là null

-(IBAction)ShangHaiButtonPressed:(id)sender{ 
    marketviewcontroller = [[MarketViewController alloc]initWithNibName:@"MarketViewController" bundle:nil]; 
    NSLog(@"%@",self.navigationController); 
    [self.navigationController pushViewController:marketviewcontroller animated:YES]; 
    [marketviewcontroller release]; 
} 

nhưng tôi có thể thấy self.navigationController là null, làm thế nào để giải quyết vấn đề này?

update:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    _switchviewcontroller = [[SwitchViewController alloc]initWithNibName:@"SwitchViewController" bundle:nil]; 
    [self.window addSubview:_switchviewcontroller.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+1

Tôi đoán currentViewController của bạn trong không chuyển hướng điều khiển ngăn xếp thứ bậc. thêm currentViewController để navigationcontroller nên giải quyết vấn đề yr – iOSPawan

+0

vì vậy những gì tôi nên làm gì? – Gaojian922188

+1

Trong ứng dụng đại biểu có đối tượng cửa sổ, trong phương pháp AppDidFinishLaunching Đầu tiên tạo đối tượng cho điều khiển đầu tiên yr sau đó tạo NavigationControllerObject như - [[UINavigationController alloc] initWithRootViewController: yrcurrentcontroller]; [self.window addSubView: navigationController.view] – iOSPawan

Trả lời

19

Các navigationController tài sản của một bộ điều khiển xem sẽ trả về một đối tượng điều khiển chuyển hướng chỉ có giá trị nếu điều khiển chế độ xem ở menu ngăn xếp một bộ điều khiển chuyển hướng của. Có thể thêm bộ điều khiển chế độ xem vào ngăn xếp điều hướng theo các cách sau.

  1. Bằng cách làm cho bộ điều khiển xem các rootViewController của một bộ điều khiển chuyển hướng sử dụng initWithRootViewController: phương pháp UINavigationController

  2. Bằng cách đẩy điều khiển xem sử dụng pushViewController: phương pháp UINavigationController.

Đảm bảo bộ điều khiển chế độ xem được thêm vào ngăn điều hướng theo bất kỳ cách nào ở trên.


EDIT: (Sau khi didFinishLaunchingWithOptions: Mã thêm vào câu hỏi):

Thay đổi didFinishLaunchingWithOptions: phương pháp này,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    _switchviewcontroller = [[SwitchViewController alloc]initWithNibName:@"SwitchViewController" bundle:nil]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:_switchviewcontroller]; 
    [self.window addSubview:navController.view]; 
    [navController release]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

Tôi chỉ có mã trên về giao dịch với navigationController, vì vậy mã khác tôi cần phải viết, cảm ơn bạn. – Gaojian922188

+0

Bạn có * window -> currentViewController * và bây giờ bạn muốn đẩy * marketviewcontroller *, (tức là) * window -> currentViewController -> marketviewcontroller * phải không? – EmptyStack

+0

có, bạn đang ở ngay – Gaojian922188

0
In appdelegate.m file make your first view RootView for Navigation : 


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  

myView *Obj=[[myView alloc]initWithNibName:@"myView" bundle:nil]; 
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:Obj]; 
nav.navigationBar.barStyle = UIBarStyleBlackOpaque; 
[window addSubview:nav.view]; 
[self.window makeKeyAndVisible]; 
return YES; 

}

In your myView.m file add below code to navigate to myNewView from myView : 

    -(void) registerMethod 
{ 
    myNewView *obj = [[myView alloc] initWithNibName:@"myNewView" bundle:nil]; 
    [self.navigationController pushViewController:obj animated:YES]; 

    [obj release]; 
} 
3

Mã này sẽ mang lại giải pháp bạn đang tìm kiếm:

-(IBAction)ShangHaiButtonPressed:(id)sender { 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self]; 
    [self.view removeFromSuperview]; 
    [appDelegate.window addSubview:nav.view]; // appDelegate is the delegate of your Application 
    marketViewController = [[MarketViewController alloc] initWithNibName:@"MarketViewController" bundle:nil]; 
    [nav pushViewController:marketViewController animated:YES]; 
    [marketViewController release];  
} 
+0

cảm ơn nó đã giúp tôi trong tình huống khác –