2014-01-24 52 views
0

在我的申請,我有4 UIViewcontrollers - A,B,C和D.駁回視圖控制器和呈現另一個的viewController

從我UIViewController A,UIVIewControllers B或C或d可以被呈現。假設從A出現了B,那麼在B上有兩個UIButtons,點擊哪個,我需要解僱B和現在C或者解僱B和現在D.這是成功的,但是首先在解僱後B,A的屏幕上出現,然後進入到C或D.

這裏就是我所做的:

按下按鈕,在B上的動作是:

{ 
    UINavigationController *controller = (UINavigationController *)self.parentViewController; 
    NSLog(@"%@",[controller parentViewController]); 
    UITabBarController *tabBarReference = (UITabBarController *)[controller parentViewController]; 

    HomePageViewController *presController = (HomePageViewController *)tabBarReference.presentingViewController; 
    [presController dismissTabControllerWithHandlerWithSenderAtIndex:1]; 
} 

在A,我有這些方法:

-(void)dismissTabControllerWithHandlerWithSenderAtIndex:(NSInteger)index 
{ 
    if(index == 0) 
    { 
     [self dismissViewControllerAnimated:NO completion:^{ 

      [self aboutButtonPressed:self]; 

     }]; 
    } 

    else 
    { 
     [self dismissViewControllerAnimated:NO completion:^{ 

      [self settingsButtonPressed:self]; 

     }]; 
    } 
} 

這裏是我打電話的方法..

- (IBAction)settingsButtonPressed:(id)sender 
{ 
    [self.contactUsView setHidden:YES]; 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSString *deviceType = [prefs objectForKey:@"DeviceType"]; 
    NSString *iOSType = [prefs objectForKey:@"iOSType"]; 

    if([iOSType isEqualToString:@"iOS7"]) 
    { 
     if([deviceType isEqualToString:@"iPad"]) 
     { 
      SettingsViewController *settingsPage = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController_iPad" bundle:NULL]; 
      settingsPage.modalTransitionStyle = UIModalTransitionStylePartialCurl; 
      [self presentViewController:settingsPage animated:YES completion:NULL]; 
     } 

     else 
     { 
      SettingsViewController *settingsPage = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:NULL]; 
      settingsPage.modalTransitionStyle = UIModalTransitionStylePartialCurl; 
      [self presentViewController:settingsPage animated:YES completion:NULL]; 
     } 
    } 

    else 
    { 
     if([deviceType isEqualToString:@"iPad"]) 
     { 
      SettingsViewController *settingsPage = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController_iPad_iOS6" bundle:NULL]; 
      settingsPage.modalTransitionStyle = UIModalTransitionStylePartialCurl; 
      [self presentViewController:settingsPage animated:YES completion:NULL]; 
     } 

     else 
     { 
      SettingsViewController *settingsPage = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController_iOS6" bundle:NULL]; 
      settingsPage.modalTransitionStyle = UIModalTransitionStylePartialCurl; 
      [self presentViewController:settingsPage animated:YES completion:NULL]; 
     } 
    } 
} 
+0

你解聘控制器第一&然後顯示一個控制器? – footyapps27

+0

是的..我需要這樣做..當C或D出現時,B不應該記憶。這是因爲只有A可以呈現B,C或D – Shradha

+0

問題是您正在使用完成塊來顯示內容! – footyapps27

回答

0

確定這裏有雲: -

假設viewcontroller A爲基礎&它presents要麼view controllers B或C.

實施委託/通知,其中視圖控制器B或C必須被解除。

發送委託或發佈通知後,請關閉當前的view controller without animation, i.e animation:NO。需要view controller A.

這裏聽到你目前的下一個視圖控制器

被張貼此通知。

編輯: -

-(void)dismissTabControllerWithHandlerWithSenderAtIndex:(NSInteger)index 
{ 
    if(index == 0) 
    { 
     [self dismissViewControllerAnimated:NO completion:nil]; 
     [self aboutButtonPressed:self]; 

    } 

    else 
    { 

     [self dismissViewControllerAnimated:NO completion:nil]; 
     [self settingsButtonPressed:self]; 
    } 
} 
+0

是的,我只做了..仍然A是可見的第一,然後下一個視圖控制器被推入.. – Shradha

+0

看到我的代碼.... – Shradha

+0

@ Coder123:檢查編輯! – footyapps27

相關問題