2014-01-08 61 views
0

我有兩個通過控制器,一個主VC,然後是一個segued VC。在我繼續下去之前,我一定要讓主人成爲被風險投資者的代表。連接已建立。關閉ViewController使用委託不工作iOS

在segued VC中,有一個觸發解僱的按鈕(有點像取消按鈕)。在segued VC,我有以下代碼:

-(IBAction)deletePill:(id)sender { 
[delegate pillInfoViewControllerDidDeletePill:pill]; 

}

在主VC,我只有這個:

-(void) pillInfoViewControllerDidDeletePill: (Pill*) pill{ 
[self dismissViewControllerAnimated:TRUE completion:nil]; 

}

我在想什麼這裏??

更新回答評論和添加更多的代碼

爲了回答這個問題,並提供更多的代碼(我不想做一個代碼轉儲)。我不會像這種模型視圖那樣呈現。用戶按下主VC中的一個按鈕,啓動推送過程。這裏是推繼續的代碼:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(UICollectionViewCell *)sender{ 
if([segue.identifier isEqualToString:@"pillInfo"]){ 
    pills=[[NSMutableArray alloc]initWithArray:[[self fetchedResultsController]fetchedObjects]]; 
    Pill* pillSelected =pills[sender.tag]; 
    PillInfoViewController *dest= [segue destinationViewController]; 
    [dest setPill:pillSelected]; 
    [dest setDelegate:self]; 
} 
+0

你是什麼意思你解僱控制器?你提出這個像modelView? – Retro

+0

你在哪裏分配你的代表? – Mani

+0

需要...更多... code – staticVoidMan

回答

1

您不能在解散呈現的視圖控制器時調用呈現視圖控制器的動作。爲此,你可使用NSNotificationCenter如下:

-(IBAction)deletePill:(id)sender { 
       [[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationName" object:nil]; 
} 

現在,在主視圖控制器在viewDidLoad中添加以下代碼:

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(pillInfoViewControllerDidDeletePill) 
name:@"NotificationName" object:nil]; 
0

方法

-(void) pillInfoViewControllerDidDeletePill: (Pill*) pill 

應該是例如一個協議的一部分像這樣:

@protocol VCDismissingProtocol 
@optional 
-(void) pillInfoViewControllerDidDeletePill: (Pill*) pill; 
@end 

請確保您已經聲明自己的主視圖控制器實現了協議:

@interface MasterViewController : UIViewController<VCDismissingProtocol>{ 
... 
} 
@end 

和segued視圖控制器聲明的委託財產,像這樣:

@property (weak,nonatomic) id <VCDismissingProtocol> delegate; 
+0

一切都在那裏。啊。 –

+0

在'[delegate pillInfoViewControllerDidDeletePill:pill];'調用上設置一個斷點並在該方法的實現中查看委託對象並調試 - 設置是否正確?你也可以嘗試使用'[self dismissViewControllerAnimated:YES completion:nil]'而不是'[self dismissViewControllerAnimated:TRUE completion:nil]' – codingPanda