2016-02-11 26 views
0

我想在使用核心數據插入項目後重新加載我的表視圖控制器。我正在使用故事板來呈現我的模式視圖控制器,並設置目標視圖控制器的代表準備繼續,但我認爲這是問題,因爲我的didAddCollection方法沒有被觸發。我不確定我在這裏錯過了什麼。我用iOS TableView Reload after dismissing modal作爲當前代碼的基礎。Objective-C - 解除模式後重新加載表視圖數據

在我CCNewCollectionViewController.h

@protocol NewCollectionDelegate <NSObject> 

-(void) didAddCollection; 

@end 


@interface CCNewCollectionViewController : UIViewController { 
    id delegate; 
} 

@property (nonatomic, retain) id <NewCollectionDelegate> delegate; 

在我CCNewCollectionViewController.m

@implementation CCNewCollectionViewController 

@synthesize delegate; 

// save data 

[self.delegate didAddCollection]; 

// dismiss view controller 

在我CollectionTableViewController.m

@interface CollectionTableViewController() <NSFetchedResultsControllerDelegate, NewCollectionDelegate> 

-(void) didAddCollection { 

    [self.tableView reloadData]; 

} 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    [[segue destinationViewController] setDelegate:self]; 
} 
+0

我無法理解@interface CCNewCollectionViewController:UIViewController {id}委託; }。 – Lumialxk

+0

CCNewCollectionViewController是我以模態方式呈現的視圖。你有什麼特別難以理解的? – werne2j

+0

爲什麼你有一個名爲「委託」的屬性和一個成員變量? – Lumialxk

回答

1

一個非常愚蠢的錯誤。當設置目標視圖控制器的委託時,我實際上正在設置UINavigationController的委託而不是CCNewCollectionViewController。

UINavigationController *nc = [segue destinationViewController]; 
CCNewCollectionViewController *vc = nc.viewControllers[0]; 
[vc setDelegate:self]; 

我改變了我的prepareForSegue代碼,並解決了我的問題!

0

不知道這是否會解決您的問題,但我覺得創建一個弱委託屬性更爲典型。無需綜合。

@interface CCNewCollectionViewController : UIViewController 
    @property (nonatomic,weak) id <NewCollectionDelegate> delegate; 
    ... 
    @end 

有關使用協議的更多信息,請參閱here

相關問題