我有一個模式視圖,需要用戶在繼續之前驗證他/她的電子郵件。這種模式視圖可以從應用程序中的兩個不同位置呈現。在一個地方它來自另一種模態觀點。這是我的代碼,立即解散兩種模態視圖(很好用)。無法使if/else語句正常工作
MYUser *thisUser = [MyUser thisUser];
[thisUser refreshInBackgroundWithBlock:^(MyObject *thisUser, NSError *error) {
if (thisUser){
if ([[thisUser objectForKey:@"emailVerified"] intValue]) {
[self dismissViewControllerAnimated:YES completion:^{
MyLoginViewController *controller = (MyLoginViewController *)self.presentingViewController;
[controller verifiedEmail];
}
}];
} else {
NSLog(@"Not verified");
}
} else {
NSLog(@"%@", error);
}
}];
當我嘗試添加支票,因爲它不是來自另一個模態視圖時,問題開始。我試圖插入此if語句到我的dismissViewControllerAnimated:complete:^
區塊:
* if ([self.presentingViewController respondsToSelector:@selector(verifiedEmail)]){}
if ([self.presentingViewController isMemberOfClass:[MyLoginViewController class]]){}
* if ([self.presentingViewController class] == [MyLoginViewController class]){}
這些都不起作用。他們要麼失敗(在*'d的事件)或崩潰的應用程序。我在考慮這個問題,因爲self.presentingViewController
不是類型轉換,但如果我轉換爲NSLog(@"%@", [self.presentingViewController class]);
和NSLog(@"%@", [MyLoginViewController class]);
,則輸出看起來完全相同。
任何想法?謝謝。
隨溶液編輯
事實證明,你不能叫self.presentingViewController
結束塊內,因爲它是null
在這一點上。我修改了代碼:
MYUser *thisUser = [MyUser thisUser];
id presentingVC = self.presentingViewController;
[thisUser refreshInBackgroundWithBlock:^(MyObject *thisUser, NSError *error) {
if (thisUser){
if ([[thisUser objectForKey:@"emailVerified"] intValue]) {
[self dismissViewControllerAnimated:YES completion:^{
if ([presentingVC isMemberOfClass:[MyLoginViewController class]]){
MyLoginViewController *controller = (MyLoginViewController *)presentingVC;
[controller verifiedEmail];
}
}];
} else {
NSLog(@"Not verified");
}
} else {
NSLog(@"%@", error);
}
}];
它現在工作很好。感謝您讓我指出正確的方向!
最底層代碼發生在MyLoginViewController代碼正確的地方嗎? – Christian
我一直試圖插入像'if([self.presentingViewController isMemberOfClass:[MyLoginViewController class]]){}'到完成塊。所以它看起來像:'[self dismissViewControllerAnimated:YES completion:^ {if([self.presentingViewController isMemberOfClass:[MyLoginViewController class]]){MyLoginViewController * controller =(MyLoginViewController *)self.presentingViewController; [controller verifiedEmail]; }' –
你可以在崩潰時顯示你遇到的錯誤嗎?這可能會有所幫助。 –