2012-09-03 30 views
6

Tôi mới sử dụng iPhone,thay đổi RootviewController thành Điều khiển điều hướng

Tôi muốn thay đổi Rootviewcontroller thành lớp mới và chuyển sang bộ điều khiển điều hướng.

Dưới đây là đoạn mã của tôi,

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


    UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
    [self.window addSubview:navigationController.view]; 

    [self.window makeKeyAndVisible]; 


    return YES; 
} 

Tôi nhận SIGABRT nói 'adding a root view controller <NewClass: 0x6a8dd50> as a child of view controller:

Trả lời

12

Bất cứ khi nào u muốn thiết lập:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
self.window.rootViewController =nil; 
self.window.rootViewController = navigationController; 
[self.window makeKeyAndVisible]; 

EDIT: Trực tiếp sử dụng AppDelegateinstance thiết rootViewController cho UIWindow như tôi đã trình bày ở trên.

+0

cùng một loại m xảy ra ngay cả sau khi viết này .. – Krunal

+0

kiểm tra câu trả lời đã chỉnh sửa –

+0

Cảm ơn câu trả lời đã lưu 4 giờ làm việc cuối cùng của tôi –

2

Thay vì:

[self.window addSubview:navigationController.view]; 

làm navigationController các rootViewController của window:

self.window.rootViewController = navigationController; 

Ngoài ra, là detailViewController loại UINavigationController? Bạn không thể đặt UINavigationController làm gốc cho đối tượng UINavigationController khác.

+0

cùng một vấn đề xảy ra ngay cả sau khi viết những dòng này. – Krunal

1

Chỉ cần thêm dòng này,

RootViewController *defaultViewController=[[RootViewController alloc]initWithNibName:@"NAME_OF_XIB" bundle:nil];

trước khi khởi UINavigationController của,

RootViewController *defaultViewController=[[RootViewController alloc]initWithNibName:@"NAME_OF_XIB" bundle:nil]; 
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
[self.window addSubview:navigationController.view]; 

[self.window makeKeyAndVisible]; 
return YES; 
+0

cho tôi biết nếu điều đó hoạt động – channi

0

Thay đổi RootViewController của bạn để NavigationController ..

UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:self.detailViewController]; 
Các vấn đề liên quan