Xcode从另一个方法更新表

时间:2012-02-29 15:56:16

标签: xcode uitableview nsmutablearray

我有一个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];

我显然错过了至关重要的事情。有没有办法让一个方法可以改变另一个方法的视觉显示,在这种情况下更新已经在屏幕上的表?

1 个答案:

答案 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。