viewWillDisappear: Определите, выталкивается ли контроллер представления или показывает контроллер подвида - PullRequest
132 голосов
/ 29 ноября 2009

Я изо всех сил пытаюсь найти хорошее решение этой проблемы. В методе -viewWillDisappear: контроллера представления мне нужно найти способ определить, происходит ли это из-за того, что контроллер представления помещается в стек контроллера навигации, или из-за того, что контроллер представления исчезает из-за его выталкивания.

В данный момент я устанавливаю такие флаги, как isShowingChildViewController, но это становится довольно сложно. Единственный способ, которым я могу обнаружить это, - метод -dealloc.

Ответы [ 12 ]

0 голосов
/ 20 июня 2013

Вот категория для выполнения того же действия, что и в ответе sbrocket:

Заголовок:

#import <UIKit/UIKit.h>

@interface UIViewController (isBeingPopped)

- (BOOL) isBeingPopped;

@end

* Источник: 1009 *

#import "UIViewController+isBeingPopped.h"

@implementation UIViewController (isBeingPopped)

- (BOOL) isBeingPopped {
    NSArray *viewControllers = self.navigationController.viewControllers;
    if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {
        return NO;
    } else if ([viewControllers indexOfObject:self] == NSNotFound) {
        return YES;
    }
    return NO;
}

@end
0 голосов
/ 29 ноября 2009

Я предполагаю, что вы имеете в виду, что ваше представление перемещается вниз по стеку контроллера навигации путем нажатия нового представления, когда вы говорите, что оно помещено в стек. Я бы предложил использовать метод viewDidUnload для добавления оператора NSLog для записи чего-либо на консоль, чтобы вы могли видеть, что происходит, вы можете добавить NSLog к viewWillDissappeer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...