gpt4 book ai didi

ios - 如何从 didSelectRowAtIndexPath 调用 viewController 内的方法

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

我的 viewController (MainViewController.m) 中有一个方法接受一个参数(假设它根据数字更改 viewController 的背景颜色):

-(void) methodThatDoesSomething:(int)indexNumber {}

在这个 viewController 中我有一个 UITableView,但是这个表的委托(delegate)是另一个类 (TableDelegateClass.m)。所以在这个类中我有 didSelectRowAtIndexPath。

如何从 didSelectRowAtIndexPath 调用“methodThatDoesSomething”?如果我这样做:

MainViewController* mainView = [[MainViewController alloc] init];
[mainView methodThatDoesSomething:indexPath.row];

这是行不通的。当创建该类的另一个实例时,它不在我当前使用的 viewController 之后。

如果表的委托(delegate)是 MainViewController(只需在 didSelectRowAtIndexPath 中使用此代码),我可以轻松地做到这一点:

[self methodThatDoesSomething:indexPath.row]

但我想更好地组织代码并使用不同的类,一个用于表格,另一个用于包含表格的 viewController。

最佳答案

一个简单的解决方案可能是为 -(void) methodThatDoesSomething:(int)indexNumber {} 定义您自己的委托(delegate)协议(protocol),这样您就可以将 TableDelegateClass 委托(delegate)设置为您的 viewController然后调用 [delegate methodThatDoesSomething:indexPath.row];(在检查 respondsToSelector 之后)。您还可以在创建 TableDelegateClass 时传递 viewController 实例,但这是比委托(delegate)更高的耦合级别。

关于ios - 如何从 didSelectRowAtIndexPath 调用 viewController 内的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623577/

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