gpt4 book ai didi

ios - 将 UITableView 委托(delegate)和数据源与 tableViewController 分离

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:36 24 4
gpt4 key购买 nike

由于委托(delegate)和数据源方法以及我有多个 UITableViewCells 子类和每个子类的不同单元格布局这一事实,我的 tableView Controller 变得越来越大。我在看this post但它实际上只是讨论了如何在 dataSource/delegate 类中实现方法,而不是如何将它连接到您的 View Controller 。

因此,我创建了一个符合 tableView 委托(delegate)和数据源协议(protocol)的类,添加了一个 tableView 属性用作对 tableView 的引用,以及一个 posts 属性用作数据源数组。

@interface SPPostsDataSouceAndDelegate : NSObject <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic) NSArray *posts;

@end

我将我的委托(delegate)和数据源方法从我的 tableView Controller 中剪切到该类的实现中。然后在我的 tableView Controller 中,我为该数据源和委托(delegate)类添加了一个属性。

@property (nonatomic) SPPostsDataSouceAndDelegate *postsDataSourceAndDelegate;

并且在 View 中确实将数据源和委托(delegate)加载设置为该属性,并将属性 tableView 和 posts 属性设置为我的 View Controller 的属性。

self.postsDataSourceAndDelegate = [[SPPostsDataSouceAndDelegate alloc] init];
self.tableView.delegate = self.postsDataSourceAndDelegate;
self.tableView.dataSource = self.postsDataSourceAndDelegate;
self.postsDataSourceAndDelegate.posts = self.posts;

但是它不起作用。我有什么遗漏吗?就像我说的那样,我尝试按照我链接的答案进行操作,但它并没有真正解释这部分,而且我发现的其他所有内容实际上都与您实际创建单独的类后该做什么有关,所以我有点迷失在这里。

编辑:我重构了我的代码,以便委托(delegate)/数据源不再有对 tableView 的引用。所以很好。还是什么都没做

最佳答案

想通了。从后端检索后需要更新数据源的 posts 属性。能够重构我的很多自定义单元格代码,并使用提到的动态选择器方法摆脱我表中所有不同单元格的所有 if block here .现在一切正常

 [allPostsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

if (!error) {


self.postsDataSourceAndDelegate.posts = objects;
[self.tableView reloadData];

关于ios - 将 UITableView 委托(delegate)和数据源与 tableViewController 分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com