4

Я работаю над приложением iPhone с помощью Objective C. Как мне нужно уволить двух UIViewControllers сразу, поэтому я использую ниже код:Как уволить два UIViewControllers в iOS 8?

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

Этот код работает отлично в iOS6 и iOS7, но это не так работающих в iOS8. Я проверил с помощью точки останова, мой метод ViewController viewDidLoad и viewWillAppear вызывает, но мой просмотр вообще не загружается, так как я получаю пустой белый экран. Может кто-нибудь, пожалуйста, помогите мне, что для iOS8, как я могу решить эту проблему, должен ли я использовать представленныйViewController вместо представленияViewController?

+0

Если есть несколько презентаций vc, я бы добавил наблюдателя уведомления в VC, который вы хотите уволить, и отправьте уведомление, чтобы попросить его уйти. – Horst

+0

Спасибо @Horst за ответ. но, согласно моему требованию, необходимо убрать два ViewControllers. –

+0

затем добавьте наблюдателя в оба VCs – Horst

ответ

10

Swift код

@IBAction func goBack(sender: AnyObject) { 
    var tmpController :UIViewController! = self.presentingViewController; 

    self.dismissViewControllerAnimated(false, completion: {()->Void in 
     println("done"); 
     tmpController.dismissViewControllerAnimated(false, completion: nil); 
    }); 
} 


Sample project


Objective-C код

- (IBAction)goBack:(id)sender { 

    UIViewController *trmpVC = self.presentingViewController; 

    [self dismissViewControllerAnimated:NO completion:^{ 
     [trmpVC dismissViewControllerAnimated:NO completion:nil]; 
    }]; 
} 


Sample project

+0

@JageenThansk за ваш ответ, я использую объектив c, мало знаю о сдвиге. Пожалуйста, предоставьте мне решение в объективе C, если это возможно. –

+0

okz NP я тоже его тоже – Jageen

+0

да пожалуйста .. спасибо –

1

Попробуйте следующее:

NSArray *arrVC = [self.navigationController viewControllers]; 
[self.navigationController popToViewController:[arrVC objectAtIndex:arrVC.count-2] animated:YES]; 

Надеется, что это помогает.

+0

Спасибо @ Richa, это не работает. –

+0

Что именно он делает? Можете ли вы уточнить? – Anon

+0

Да, конечно .. ваш код падает из-за проблемы с индексом. На самом деле это должен быть NSInteger currentIndex = [self.navigationController.viewControllers indexOfObject: self]; if (currentIndex-2> = 0) { [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: currentIndex-2] анимированный: ДА]; } –

Смежные вопросы