Próbuję słuchać zmian dla prezentowanego kontrolera ViewViewer, ale nie wygląda na to, że ta właściwość jest zgodna z KVO (lub przynajmniej nie jestem w stanie uzyskać z niej zmian). Czy istnieje sposób w UIViewController do słuchania zmian, gdy aktywny jest UIViewController?shownViewController Zmiany KVO
10
A
Odpowiedz
-6
Nie rozumiem dlaczego chcesz wiedzieć, czy instancja z UIViewController aktywnie przedstawiony za pomocą:
@property(nonatomic,readonly) UIViewController *presentedViewController;
Ale hej, jesteś szefem. Myślę na przykład w kontrolerze widoku, który jest unikalny i powinien być prezentowany tylko raz, ale nie wiem, czy to pasuje do twoich kryteriów.
Myślę, że najlepszym sposobem jest użycie słowa instancji jest moja rada :), na przykład
w pliku nagłówka:
+ (MyViewController *)instance;
w pliku źródłowym:
static MyViewController *instance = nil;
@implementation MyViewController
+ (MyViewController *)instance
{
return instance;
}
- (void)viewDidLoad
{
instance = self;
[super viewDidLoad];
// ...
}
Z innych części aplikacji możesz teraz:
if ([[MyViewController instance] presentedViewController])
{
// here I'm been presented
}
1
presentedViewController
nie wydaje się być zgodny z KVO, ale jest to możliwe być powiadamiany o zmianach nadrzędnymi odpowiednich metod prezentacji/Oddalenie UIViewController
:
override func presentViewController(viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) {
// will present view controller
super.presentViewController(viewControllerToPresent, animated: flag, completion: completion)
}
override func dismissViewControllerAnimated(flag: Bool, completion: (() -> Void)?) {
super.dismissViewControllerAnimated(flag, completion: completion)
// did dismiss view controller
}
Czuje się jak zwyczaj powstrzymywania jest droga. Myśli? – user2916412