1

我有一個UIViewController稱爲ShowListViewController使用一個模態視圖控制器推另一種觀點認爲到堆棧中:父視圖控制器和模型 - 視圖 - 控制器解僱檢測工作不

AddShowViewController *addShowViewController = [[AddShowViewController alloc] init]; 
[addShowViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
[self presentModalViewController:addShowViewController animated:YES]; 

我會那麼喜歡叫我的方法populateTableData當addShowViewController消失時,ShowListViewController類。

我會認爲answer found here會工作,但事實並非如此。我的方法populateTableData未被檢測爲可選的使用方法。

基本上我的問題是:如何檢測Modal View Controller何時消失,以便在類中調用將其推入堆棧的方法?

+0

當標籤約可可觸摸在iOS(iPhone,iPad的)問題,使用「可可觸摸」標籤。 'cocoa'標籤是關於在Mac OS X上關於Cocoa的問題。 – 2011-10-02 14:51:55

回答

0

確定這樣看來,在蘋果的模板Utility App's他們忽略什麼的文檔[UIViewController中] [1]說,實際上走出自己的方式來調用從UIViewControllerdismissModalViewControllerAnimated:,推高模態視圖到屏幕。

你的情況基本思想將是

  1. 定義一個協議AddShowViewControllerDelegate
  2. ShowListViewController實現此協議
  3. 呼籲委託的方法來要求它dimiss模態視圖控制器

有關完整示例,請使用Utility模板創建一個新項目並查看FlipsideViewControllerMainViewController

這裏是適合您的需求的例子:

AddShowViewController.h

@class AddShowViewController; 

@protocol AddShowViewControllerDelegate 
- (void)addShowViewControllerDidFinish:(AddShowViewController *)controller; 
@end 

@interface AddShowViewController : UIViewController 

@property (nonatomic, assign) id <AddShowViewControllerDelegate> delegate; 

- (IBAction)done:(id)sender; 

@end 

AddShowViewController.m

- (IBAction)done:(id)sender 
{ 
    [self.delegate addShowViewControllerDidFinish:self]; 
} 

ShowListViewController.h

@interface ShowListViewController : UIViewController <AddShowViewControllerDelegate> 
{ 
    ... 
} 

ShowListViewController.m

- (void)addShowViewControllerDidFinish:(AddShowViewController *)controller 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
    [self populateTableData]; 
} 
+0

因此,根據我的示例,我會將它放在'showListViewController'中,即父視圖控制器,然後在其中調用'populateTable'? –

+0

我也沒有得到'[自我ShowListViewController]'位。 –

+0

對不起,我正在使用iPad和複製錯誤的東西看更新 –

0

這可能不是一個最好的解決方案,但可以做你想要在這個時候什麼。

在你showlistcontroller在ShowListViewController的viewWillAppear中添加一個實例變量像

BOOL pushedView; 
@implementation ShowListViewController 

,並在此之前的模態演示設置它的值是像

pushedView = YES; 
[self.navigationController presentModalViewController:popView animated:YES]; 

可以檢測是否是出現,因爲流行得到解僱或不喜歡

if (pushedView) { 
    NSLog(@"Do things you would like to on pop dismissal"); 
    pushedView = NO; 
} 
0

我想你會喜歡這樣的事情。

你讓一個委託烏爾modalVC裏面是這樣的:

@protocol ModalViewDelegate <NSObject> 

- (void)didDismissModalView; 

@end 

,並實現它在你的MainVC這樣的:

@interface MainViewController : UIViewController <ModalViewDelegate> 
{ 

則U將委託財產的modalVC這樣的:

@interface ModalShizzle : UIViewController 
    { 
     id<ModalViewDelegate> dismissDelegate; 
    } 

您將您的ModalVC的dismissDelegate設置爲您的MainVC,然後您將t他委託方法。然而,在你解僱它之前,你會叫ModalVC去做最後一件事。 (這是填充你的表)。你會調用你的MainVC中的數據,然後在你解散你的modalVC之前做你喜歡的任何事情。

-(void)didDismissModalView 
{ 
    //call ModalVC data here... 
    //then do something with that data. set it to a property inside this MainVC or call a method with it. 
    //method/data from modalVC is called here and now u can safely dismiss modalVC 
    [self dismissModalViewControllerAnimated:YES]; 
} 

希望它幫助;)