我有一个code_tab.m文件,它处理UI和code.m文件,该文件执行数据处理并更新MutableArray。当code.m更新数组时,我想更新链接到connection_tab.m的视图中的表。我在code_tab.m中有一个函数,它有一个:
[self.table tableupdate]
在内部调用时,其工作正常。当从code.m文件中调用相同的函数时(当数组已更新时),即使我看到正在访问相同的代码,也没有任何反应。
我通过在code.h文件中包含此行来设置访问权限:
connection_tab* connectiontab_script;
然后使用
在code.m中调用它 connectiontab_script = [[connection_tab alloc] init];
[connectiontab_script tableupdate];
我显然错过了至关重要的事情。有没有办法让一个方法可以改变另一个方法的视觉显示,在这种情况下更新已经在屏幕上的表?
答案 0 :(得分:0)
技术上您应该避免让数据类调用视图中的方法,因为这可能会让您在将来感到头疼,MVC是推荐的开发实践。
但是,您可以通过修改initNetworkCommunication
中的code
方法,通过以下方式传递对活动视图的引用来实现您的目标:
- (void) initNetworkCommunicationForView:(UIViewController*)passedVC
您可以从connection_tab
内部致电:
[appDelegate.connection_script initNetworkCommunicationForView:self];
然后在code
你做(如果声明避免警告):
if ([passedVC respondsToSelector:@selector(tableupdate)]) {
[passedVC performSelector:@selector(tableupdate)];
}
根据code
课程的结构,如果tableupdate
来电不在initNetworkCommunication
范围内,您可能需要创建一个全班变量来存储passVC。
P.S您还可以自定义特定于connection_tab
类的方法,如:
- (void) initNetworkCommunicationForView:(connection_tab*)passedCT
然后你可以抛弃选择器的东西并继续:
[passedCT tableupdate];
但出于兼容性原因,我选择了UIViewController。