gpt4 book ai didi

ios - 在 UIviewController 中添加 UITableView

转载 作者:行者123 更新时间:2023-11-29 03:50:45 24 4
gpt4 key购买 nike

我有一个 UIViewController (ViewControllerA),在这个 UIViewController 中,我想添加一个占据部分屏幕的 UITableView subview (名为TableLoadGroupMembersViewController)。我已经为 UITableView 创建了名为 TableLoadGroupMembersViewController 的类。

ViewControllerA.h中,我通过以下方式导入了TableLoadGroupMembersViewController:

#import "TableLoadGroupMembersViewController.h"

ViewcontrollerA.m中,我想在按下按钮时通过代码创建UITableView。我希望 UITableViewTableLoadGroupMembersViewController 加载内容。如何设置UITableView读取TableLoadGroupMembersViewController的信息?

我尝试过这样的方式:

UITableView* tableVIEW = [[UITableView alloc]init];
TableLoadGroupMembersViewController* tableDelegate = [[TableLoadGroupMembersViewController alloc] init];
[tableVIEW setDelegate:tableDelegate];
[tableVIEW setDataSource:tableDelegate];

[self.view addSubview:tableVIEW];

但这会使应用程序崩溃。我应该怎么做?

编辑:

这是给出的错误:

0x387209b:  movl   8(%edx), %edi   ....  Thread 1 EXE Bad access

最佳答案

UITableView 不保留其数据源或委托(delegate),这些仅被分配。

因此,如果您使用 ARC,当您退出创建 tableView 的方法时,您的 TableLoadGroupMembersViewController 实例将被释放。实例被释放后,dataSource 和 delegate 指向无效的内存地址(因为它们的 @property 是 assign 而不是 weak)

您可以将 TableLoadGroupMembersViewController* tableDelegate 设置为强实例变量,这样它就不会被释放。

类似这样的事情。

// .h
@property (strong, nonatomic) TableLoadGroupMembersViewController* tableDelegate;

// .m

UITableView* tableVIEW = [[UITableView alloc]init];
TableLoadGroupMembersViewController* tableDelegate = [[TableLoadGroupMembersViewController alloc] init];
self.tableDelegate = tableDelegate;
[tableVIEW setDelegate:tableDelegate];
[tableVIEW setDataSource:tableDelegate];

[self.view addSubview:tableVIEW];

关于ios - 在 UIviewController 中添加 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110762/

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