2013-07-18 13 views
5

Yêu cầu của tôi là UITabBarController là rootviewcontroller và lần đầu tiên khởi chạy ứng dụng tôi muốn hiển thị thủ tục đăng nhập bên trong UINavCon, và tôi hiển thị nó thông qua presentViewController.Có thể [self.window makeKeyAndVisible]; được gọi trước khi thiết lập rootviewcontroller

Tôi không muốn UITabBarController hiển thị lần đầu tiên và không muốn cách đăng nhập UINavCon popping dưới dạng phương thức.

Tôi muốn tạo trải nghiệm người dùng nếu ứng dụng bắt đầu đăng nhập lần đầu tiên UINavCon sẽ hiển thị. Vì vậy, đây là mã của tôi:

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

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

[self.window makeKeyAndVisible];//is it correct to call it here? 

LoginVC *loginObj = [[LoginVC alloc]init]; 

self.navigationController = [[UINavigationController alloc] initWithRootViewController:cellPhoneNumber]; 

self.tabBarController = [[UITabBarController alloc]init]; 

self.window.rootViewController = self.tabBarController; 

[self.tabBarController presentViewController:self.navigationController animated:NO completion:^{}]; 

return YES; 
} 

tôi kêu gọi [self.window makeKeyAndVisible]; trên dòng thứ hai ngay sau khi uiwindowallocinit. Là nó đúng làm điều này hoặc tôi có thể gặp vấn đề như viewcontroller không nhận được sự kiện hoặc định hướng thông báo?

Trả lời

4

bạn có thể gọi nó bất cứ khi nào bạn muốn. Việc gọi nó ảnh hưởng đến thuộc tính z-index và màn hình của cửa sổ. nó không phụ thuộc vào bất kỳ nội dung cụ thể nào được đặt.

+0

Cảm ơn rất nhiều vì đã trả lời, Bạn có thể cho tôi biết chúng tôi thường chỉ có một uiwindow trong trường hợp đầu ra bên ngoài sau đó chúng tôi có một uiwindow khác. Theo mặc định như trong trường hợp của tôi, uiwindow nằm trên 0 index và apple cũng nói điều này "Đây là một phương thức tiện lợi để biến người nhận thành cửa sổ chính và hiển thị nó trước cửa sổ khác." chúng có ý nghĩa gì trước các cửa sổ khác. –

+0

cũng không có gì ngăn bạn có nhiều cửa sổ. ví dụ. thường bạn đã có 2 hoặc nhiều hơn .. của bạn và cửa sổ bàn phím! –

5

Bạn chưa đề cập rằng bạn có nhận được mã hoạt động hay không bằng cách sử dụng triển khai của bạn. Dù sao tôi đã thực hiện tương tự như loại thực hiện gần đây, nơi chúng tôi cần phải trình bày điều khiển đăng nhập và sau đó tabBarController sau khi đăng nhập, vì vậy chỉ cần chia sẻ thực hiện của tôi.

  1. Tạo bộ điều khiển đăng nhập của bạn và trình bày nó theo phương thức didFinishLaunching.

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    LoginController *loginCObj= [[[MainScreenController alloc]init]autorelease]; 
    UINavigationController *navigationControllerObj = [[[UINavigationController alloc]initWithRootViewController:loginObj]autorelease]; 
    self.window.rootViewController = navigationControllerObj; 
    [self.window makeKeyAndVisible]; 
    
  2. Sau đó về đăng nhập thành công trong điều khiển điểm đăng nhập của bạn, hãy gọi một phương pháp nào appdelegate

    Trong điều khiển đăng nhập

    AppDelegate *appDel = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [appDel applicationLoggedInSuccesfully]; 
    

    Trong file appdelegate của bạn, thêm một phương pháp như thế này:

    -(void)applicationLoggedInSuccesfully{ 
        UINavigationController *nv1 = [[[UINavigationController alloc] initWithNibName:nil bundle:nil]autorelease]; 
        TabController1 *v1 = [[[TabController1 alloc] initWithNibName:nil bundle:nil]autorelease]; 
        [nv1 pushViewController:v1 animated:NO]; 
    
        UITabBarController *tabController = [[[UITabBarController alloc] init]autorelease]; 
        tabController.viewControllers = @[nv1]; 
        tabController.delegate = self; 
        self.window.rootViewController = tabController; 
        [self.window makeKeyAndVisible]; 
    } 
    

Hy vọng nó sẽ giúp bạn.

+1

cảm ơn bạn đã trả lời, tôi chỉ muốn biết có thể [self.window makeKeyAndVisible]; có thể gọi bất kỳ lúc nào hoặc phải gọi vào cuối hoặc sau khi đặt rootviewcontroller. –

+0

Bạn có tìm thấy bất kỳ sự cố nào khi gọi ngay từ đầu không? – HRM

+0

không có vấn đề gì nhưng có vẻ như làm việc tốt, nhưng tôi không muốn gặp rắc rối sau này, vì vậy đó là lý do tại sao tôi yêu cầu và tăng kiến ​​thức cũng :) –

Các vấn đề liên quan