簡體   English   中英

Objective-C-消除模態后重新加載表視圖數據

[英]Objective-C - Reloading table view data after dismissing modal

我嘗試使用核心數據插入項目后重新加載我的表視圖控制器。 我正在使用情節提要來演示我的模態視圖控制器,並設置目標視圖控制器的委托以准備進行搜索,但我認為這是問題所在,因為未觸發我的didAddCollection方法。 我不確定我在這里想念的是什么。 在消除模態作為我當前代碼的基礎之后,我使用了iOS TableView Reload

在我的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];
}

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

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

我將我的prepareForSegue代碼更改為此,它解決了我的問題!

不知道這是否可以解決您的問題,但我認為僅創建一個弱的委托屬性是比較典型的。 無需合成。

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

有關使用協議的更多信息,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM