如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图

Posted

技术标签:

【中文标题】如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图【英文标题】:How to reload table view from another view controller via appDelegate in iOS Objective C 【发布时间】:2016-02-11 16:14:50 【问题描述】:

我正在尝试从我的 FirstViewController 重新加载我的 SingleGrid 的 UITableViewUITableView 的声明是 IBOutlet 和在我的 AppDelegate 中声明的 singleGrid 变量。 我想从 FirstViewController 重新加载 singleGrid 的 UITableView。表视图名称 singleGridTable 不在点之后。

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

[appDelegate.singleGrid.singleGridTable reloadData]

【问题讨论】:

@shehzad ali 我不明白你的意思是什么?这段代码在我的 FirstViewController 中,我也写了 firstViewController 的 viewdidload 的顶部:AppDelegate *appDelegate= [[UIApplication sharedApplication] delegate]; 您的 singleGridTable 被声明为 SingleGrid 的 .h 文件中的属性? @property (nonatomic, weak) IBOutlet UITableView * singleGridTable; 在SingleGrid.m的顶部是这样声明的 // SingleGrid.m文件 @interface SingleGrid () property (nonatomic, strong) IBOutleT UITableView *singleGridTableView;结束 将其移至 .h 文件。届时它将公开,并对您的 firstViewController 可见。 好吧,我会尝试thanx很多 【参考方案1】:

确保您已将 singleGrid 声明为 appdelegate.h 中的属性,例如

@property (nonatomic, strong) SingleGridViewController * SingleGrid;

那些在 .h 文件中声明的属性是公共的,否则它们是私有的,你不能在其他类中访问它们。

还要确保 singleGridTable 在您的 .h 文件中也被声明为属性。

@property (nonatomic, weak) IBOutlet UITableView * singleGridTable;

【讨论】:

没关系,但是在 nsurlsessin 块中的 nsurlsession 请求之后,我写了这个但不是工作表没有重新加载 dispatch_sync(dispatch_get_main_queue(), ^ [appDelegate.singleGrid.singleGridTable reloadData]; );跨度> 确保 singleGridTable 的实例数据源和委托应针对 singleGrid 的实例设置。 在我的 FirstViewController 的初始化中我写:singleGridTable.delegate = self; singleGridTable.dataSource = 自我;你是这个意思吗? 在 NSURLSession 响应中添加断点并检查 singleGrid 是否存在?如果存在,请检查 singleGrid.singleGridTable.delegate;你可以在调试器po appDelegate.singleGrid;然后po appDelegate.singleGrid.singleGridTable.delegate;使用命令 singleGridTable 存在但未进入 dispatch_sync 块 appDelegate.singleGrid.singleGridTable ;层 = ;内容偏移:0, 0;内容大小:280, 0>【参考方案2】:

更多代码可能会有所帮助(相关的标头和实现),但我可以在黑暗中试一试。 firstViewController 是否知道 SingleGrid 上将存在哪些属性?无论您想在何处访问 SingleGrid 上的属性,都需要包含声明该属性存在的标头。你的 firstViewController 也是如此

【讨论】:

以上是关于如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Objective C 从 iOS 中的 Core Data 中过滤数据

如何从 iOS 9 和 Objective C 中的 .MOV 文件中获取缩略图?

导航栏中的页面指示器和标题iOS Objective C

如何在 iOS 8 Objective c 中的 UIWebView 中从文档中加载 png 图像

如何在应用程序委托iOS10 Objective C中的applicationWillEnterForeground方法中以模态方式呈现UIViewController

如何使用 Objective C iOS 从 iPhone X 中的表格视图顶部删除多余的空间