Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从自定义UITableViewCell调用UITableViewController中的方法_Objective C_Ios_Uitableview_Encapsulation - Fatal编程技术网

Objective c 从自定义UITableViewCell调用UITableViewController中的方法

Objective c 从自定义UITableViewCell调用UITableViewController中的方法,objective-c,ios,uitableview,encapsulation,Objective C,Ios,Uitableview,Encapsulation,我需要调用一个方法并将一个对象从自定义UITableViewClass实现传递到UITableViewController类。我意识到在自定义tableViewCell中创建tableViewController的实例并调用tableViewController的方法是一种糟糕的做法 这样做的正确方式是什么 Objective-C中的两个神奇概念是和 委托允许您将控制器挂钩到单元格中引用的弱对象中,这避免了保留周期,同时仍然允许您向其发送消息 通知允许您的单元格向任何处于活动状态并正在侦听的类广

我需要调用一个方法并将一个对象从自定义UITableViewClass实现传递到UITableViewController类。我意识到在自定义tableViewCell中创建tableViewController的实例并调用tableViewController的方法是一种糟糕的做法


这样做的正确方式是什么

Objective-C中的两个神奇概念是和

委托允许您将控制器挂钩到单元格中引用的弱对象中,这避免了保留周期,同时仍然允许您向其发送消息

通知允许您的单元格向任何处于活动状态并正在侦听的类广播常规通知


选择一个,无论哪一个最容易,坚持它。在这种情况下,两者基本上是相等的。

在单元格中引用tableController确实是一种不好的做法

您可以通过为UITableViewClass实现一个特殊的@协议来解决这个问题 并向其添加一个委托方法,然后在UITableViewController中实现该方法,由于UITableViewClass委托是UITableViewController,因此您可以像这样调用它 在UITableViewClass.m中

[delegate someMethod:data];

令人不快的这是鼓励。。。授权,通知,超级。。。见鬼,就连消息本身的概念也暗示着双向通信。委托调用委托对象中的方法,通知是为了强制对象解耦,所以我猜你甚至不明白我想说什么,或者我解释得不太好,-1是不值得的,如果你仔细阅读答案,你会注意到我所做的是实现一个新的委托:,如果你再读一遍,我会很高兴,thanks@CodaFi好的,但是你仍然认为我的答案不是正确的方法吗,因为从我读到的内容来看,你的建议是与Too代表一起去,我保留我的投票,因为说这种双向交流不好是完全错误的He,正如我所说的,我认为我们的答案都是准确的,我的意思是把两个班级联系在一起是不好的,既然我假设他想的是在另一个类中同时添加对另一个类的引用,那么类a将引用类a,类b将引用a,但是现在你这么说了,我真的应该更新我的答案:我可以传递一个带有通知的对象吗?如果没有,我将尝试授权。是的。方法-postNotificationName:object:userInfo:获取usersInfo参数中参数的NSDictionary。不要通过对象参数传递对象。