2012-02-29 49 views
0

我有一个code_tab.m文件,它处理UI和code.m文件,它执行数据处理并更新MutableArray。当code.m更新数组时,我想更新链接到connection_tab.m的视图中的表。我在code_tab.m中有一个函数,它有:Xcode从另一种方法更新表

[self.table tableupdate] 

它在内部调用时按预期工作。当从code.m文件中调用相同的函数时(数组已更新时),即使我可以看到正在访问的代码,也没有任何反应。

我必须有在code.h文件这一行设置访问权限:

connection_tab* connectiontab_script; 

,然后用

connectiontab_script = [[connection_tab alloc] init]; 
[connectiontab_script tableupdate]; 

称其为code.m我显然错过了什么重要的。有没有一种方法可以改变另一种方法的视觉显示,在这种情况下更新屏幕上的表格?

+1

您正在创建'connection_tab'的另一个实例,因此您实际上正在更新一个您看不到的表格,而不是最初加载的表格。您需要传递对初始'connection_tab'的引用或查看使用委托。 – GregularExpressions 2012-02-29 17:14:09

+0

这就是我想可能会发生的事情。你如何去传递一个对初始connection_tab的引用? – 2012-02-29 17:42:49

+0

你能告诉我们connection_tab如何与你的数据类代码进行通信吗? – GregularExpressions 2012-02-29 17:50:43

回答

0

技术上您应该避免让您的数据类别调用您的视图中的方法,因为它可能会在将来导致您头痛,MVC是推荐的开发实践。

但是,你可以达到你想要在code修改您的initNetworkCommunication方法怎样做才能通过一个参考活动视图:

- (void) initNetworkCommunicationForView:(UIViewController*)passedVC 

,你会从里面connection_tab像拨打:

[appDelegate.connection_script initNetworkCommunicationForView:self]; 

然后在code你会做(if语句避免警告):

if ([passedVC respondsToSelector:@selector(tableupdate)]) { 
    [passedVC performSelector:@selector(tableupdate)]; 
} 

根据您的code类的结构,如果tableupdate调用不在initNetworkCommunication内,您可能需要创建一个类级变量来存储传入的VC。

PS你也可以自定义的方法是特定于您connection_tab类,如:

- (void) initNetworkCommunicationForView:(connection_tab*)passedCT 

然后,你可以抛弃选择的东西,一起去:

[passedCT tableupdate]; 

但我UIViewController中去出于兼容性原因。