2012-11-24 40 views
1

我有下面的代碼iOS6的工作之前,但我無法找到一個簡單的方法與iOS6的,故事和Xcode的4.5調用從同一按鈕,根據條件的兩個不同的控制器

-(IBAction) ButtonPressed:(id)sender{ 

    if(condition == 1]) { 

     FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil]; 
     firstController.delegate = self; 
     firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentViewController:firstController animated:NO completion:nil]; 
     [firstController release]; 
    } 

    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil]; 
     secondController.delegate = self; 
     secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentViewController:secondController animated:NO completion:nil]; 
     [secondController release]; 

} 

做此用工作正常。如果我將代碼保留在iOS6中,則沒有任何控制器可以正常顯示。嘗試將控制器導航轉換到故事板並不會有什麼幫助,因爲看起來我只能使用一個動作來觸發使用ButtonPressed中的模態漸變到其中一個或另一個的轉換。 將第一個控制器嵌入到第二個控制器的viewdiload中有其自身的問題。如果它在viewdidload上不能像其他人一樣正常工作。如果我把它放在viewdidappear中,第二個控制器將首先顯示創建一個令人不快的UI。有任何想法嗎?

+1

一個FYI:目標C中的最佳實踐說,你應該用小寫字母開始你的方法名稱。換句話說,將您的「ButtonPressed」操作聲明更改爲「buttonPressed」。 –

+0

你錯過了這裏的其他條件嗎?如果條件== 1,你是否同時執行? – iDev

+0

不,如果條件是1,那麼它將首先運行firstController,然後運行第二個。如果條件不是一個,那麼它只會運行第二個控制器。我想做的事情是上傳文件到互聯網。如果用戶沒有註冊,那麼他必須通過第一個控制器(註冊),然後是第二個控制器(上傳)。如果用戶已註冊,則可以直接轉到上傳控制器。 –

回答

0

視圖控制器一次只能呈現一個視圖控制器。需要不同的方法。例如,您可以使用導航視圖控制器來完成您想要完成的任務。如果用戶已登錄,則將上傳視圖控制器設置爲導航視圖控制器的根視圖控制器。如果用戶未登錄,則將根視圖控制器設置爲登錄視圖控制器。當用戶登錄時,登錄視圖控制器將在其委託中通知用戶登錄,然後可以將上載視圖控制器推入導航堆棧。

- (IBAction)buttonPressed:(id)sender{ 

    UINavigationController* nvc; 

    if(condition == 1) { 
     FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil]; 
     firstController.delegate = self; 
     firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     nvc = [[UINavigationController alloc] initWithRootViewController:firstController]; 
     [firstController release]; 
    } 
    else { 
     SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil]; 
     secondController.delegate = self; 
     secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     nvc = [[UINavigationController alloc] initWithRootViewController:secondController]; 
     [secondController release]; 
    } 

    [self presentViewController:nvc animated:YES completion:nil]; 

    [nvc release]; 
} 

//Login view controller delegate method 
- (void)loginViewControllerDidLoginSuccessfully:(FirstController*)loginViewController{ 
    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil]; 
    secondController.delegate = self; 
    secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [secondController.navigationItem setHidesBackButton:YES]; 
    [loginViewController.navigationController pushViewController:secondController animated:YES]; 
    [secondController release]; 
} 
相關問題