gpt4 book ai didi

ios - Xcode:在 Interface Builder 中将对象分配为 UITableView 数据源/委托(delegate)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:06 25 4
gpt4 key购买 nike

我对 Xcode 比较陌生。

我正在尝试尽可能多地在 Xcode 的 Interface Builder 中执行此操作。因为我使用的是遗留代码,所以 Storyboards 不是一个选项。

我正在使用 XIB,我称之为 DualTVController。它基于一个简单的 UIViewContoller。

在这个 XIB 中,我有两个 UITableView,LeftTV 和 RightTV。在 IB 中,我能够将 LeftTV 的委托(delegate)/数据源分配给文件所有者,这是 XIB 的类表示。这很好用。

我想在 IB 中分配 RightTV 的委托(delegate)/数据源。到目前为止,我已经成功地为此使用了 LeftTV,但这只是令人困惑。

相反,我创建了一个名为 RightDelegate 的 UITableViewController 子类,并将其指定为我通过 IB 创建的一个简单对象的类。我让它遵循 UITableViewDataSource 和 UITableViewDelegate 协议(protocol)。这允许我在 IB 中将 RightTV 的委托(delegate)/数据源连接到它,但是当我尝试运行它时,我收到 BAD_ACCESS 错误。

我在 RightDelegate 中的委托(delegate)代码与在 LeftTV 中的委托(delegate)代码相同(有效)。谁能提出这个问题?我是否负责在代码中实例化 RightDelegate?

感谢您的帮助。

最佳答案

注意:我知道您想在 IB 中执行此操作,但在这种情况下,这可能最好在代码中处理。在 IB 中为单个 TableView 设置委托(delegate)很简单,但很容易被忽视。由于委托(delegate)非常重要,我通常将它们保留在代码中以减少错误。

当您打算使用多个表格 View 时,有几种方法可以管理委托(delegate)。

a) 使用每个委托(delegate)回调的逻辑来管理 View Controller 中的两个委托(delegate),以确定哪个 tableview 正在询问(最终变得困惑)b) 通过将一个留在你的 vc 中并将另一个放在它自己单独的 Controller 中来拆分委托(delegate)(有点困惑)

c) 通过为每个 TableView 使用单独的 TableView Controller 实例来拆分委托(delegate)。这可能是最佳选择,但它确实需要 3 个 Controller - 将初始化 xib 文件的初始 View Controller ,然后是两个单独的 TableView Controller - leftTable、rightTable。

在您的主视图 Controller 中,确保为每个 TableView 设置一个属性:然后包括你的 View Controller 然后初始化 TableView Controller 并设置委托(delegate)

//Example
self.rtv = [[rightTableViewController alloc] init]; //create a strong property for this
self.rtv.delegate = self; //let it talk back to you if needed

self.ltv = [[leftTableViewController alloc] init];
self.ltv.delegate = self;

self.rightTableView.delegate = rtv;
self.rightTableView.datasource = rtv;

self.leftTableView.delegate = ltv;
self.leftTableView.datasource = ltv;

然后只需在每个 TableView Controller 中添加代码来管理 TableView 。如果您需要 tableview controller 来调用您的主 view controller,那么请使用委托(delegate)回调。

希望这对您有所帮助,祝您好运。

关于ios - Xcode:在 Interface Builder 中将对象分配为 UITableView 数据源/委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536232/

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