【问题标题】:Objective-C - Reloading table view data after dismissing modalObjective-C - 关闭模式后重新加载表视图数据
【发布时间】:2016-02-11 12:56:06
【问题描述】:

在使用核心数据插入项目后,我正在尝试重新加载我的表视图控制器。我正在使用情节提要来展示我的模态视图控制器,并正在设置目标视图控制器的委托以准备继续,但我认为这是问题所在,因为我的 didAddCollection 方法没有被触发。我不确定我在这里缺少什么。我使用iOS TableView Reload after dismissing modal 作为当前代码的基础。

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

【问题讨论】:

  • 我无法理解@interface CCNewCollectionViewController : UIViewController { id delegate; }.
  • CCNewCollectionViewController 是我以模态方式呈现的视图。您特别难以理解什么?
  • 为什么你有一个属性和一个成员变量都命名为“delegate”?
  • 按照我在我的问题中提出的链接,创建委托实例然后定义它。但我也一直在修补它。我删除了 { id delegate } 并没有任何改变。

标签: ios objective-c core-data


【解决方案1】:

一个非常愚蠢的错误。在设置目标视图控制器的委托时,我实际上是在设置 UINavigationController 的委托,而不是 CCNewCollectionViewController。

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

我将 prepareForSegue 代码更改为此,它解决了我的问题!

【讨论】:

    【解决方案2】:

    不确定这是否能解决您的问题,但我认为创建一个弱委托属性更为典型。无需合成。

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

    有关使用协议的更多信息,请参阅here

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 2020-11-22
      • 2012-04-30
      • 2021-10-23
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      相关资源
      最近更新 更多