gpt4 book ai didi

ios - 递归 UITableViewController 和委托(delegate)

转载 作者:行者123 更新时间:2023-11-29 03:55:46 25 4
gpt4 key购买 nike

我有一个 UITableViewController ,它将递归调用自身 n 次:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
// call different controller
}
else if (indexPath.section == 1) {
GroupTableViewController *tableView = [[GroupTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
tableView.delegate = self;

[self.navigationController pushViewController:tableView animated:TRUE];
}
}

我需要将新的 GroupTableViewController 的委托(delegate)设置为当前的 GroupTableViewController

如果我尝试按照代码中的方式设置委托(delegate),我会收到警告:

Assigning to `id<GroupTableViewDelegate>' from incompatiable type `GroupTableViewController *const_strong`

所以我的第一个想法是包含 GroupTableViewDelegate 协议(protocol):

@interface GroupTableViewController : UITableViewController <RegionTableViewDelegate, GroupTableViewDelegate>

但这会导致警告:

Cannot find protocal definition for `GroupTableViewDelegate`

但是如果我尝试

#import "GroupTableViewController.h"

这会引起问题。

我该怎么做?

最佳答案

你的代码有点困惑 -

        - (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath

这里tableView是一个指向UITableView实例的指针

GroupTableViewController *tableView = 
[[GroupTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

这里tableView是一个指向GroupTableViewController实例的指针

为了清楚起见,您应该重命名此:

GroupTableViewController *gtViewController = 
[[GroupTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

那么你的错误应该会变得明显。

这个:

    tableView.delegate = self;

重命名为:

   gtViewController.delegate = self;

当你真正想要的是:

   gtViewController.tableView.delegate = self;

无需搞乱额外的协议(protocol)和委托(delegate)声明...

关于ios - 递归 UITableViewController 和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529149/

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