【发布时间】:2013-01-02 22:34:44
【问题描述】:
我有一个应用程序,它有多个 viewController,其中一些 viewController 包含运行各种任务的方法。我需要做的是在初始 viewController 加载时,在其他 viewController 中调用这些方法,以便它们在后台运行,但是,我在执行此操作时遇到了一些困难。
假设我有 4 个 viewController,A、B、C 和 D,其中 A 是初始 viewController,在每个 viewController 中,我分别有 aMethod、bMethod、cMethod 和 dMethod。以下是相关代码:
在我打开的viewController(AviewController)里面:
在 .h 文件中:
#import "BViewController"
#import "CViewController"
#import "DViewController"
@interface AViewController:UIViewController {
BViewController *bViewCon;
CViewController *cViewCon;
DViewController *dViewCon;
}
@property (nonatomic, retain) BViewController *bViewCon;
@property (nonatomic, retain) CViewController *cViewCon;
@property (nonatomic, retain) DViewController *dViewCon;
@end
在我的 .m 文件中,我有以下内容:
#import "BViewController"
#import "CViewController"
#import "DViewController"
@implementation AviewController
@synthesize bViewCon, cViewCon, dViewCon;
- (void) viewDidLoad {
[super viewDidLoad];
bViewCon = [[BViewController alloc] init];
[bViewCon bMethod];
...
}
但是,我收到错误消息,“'BViewController' 没有可见的@interface 声明选择器'bMethod'”。我需要从这个类(即 AViewController)以相同的方式从其他 viewController 调用其他方法。
提前感谢所有回复的人。
【问题讨论】:
-
小心创建所有这些视图控制器,就像你正在做的那样......
UIViewController在内存使用方面并不便宜......你是否考虑过创建单个管理器控制器(而不是NSObject的子类,哪个更便宜)来处理所有所说的背景任务? -
很遗憾,没有,现在回去重新设计应用程序已经太晚了。
-
听起来你可能需要考虑重构。
-
这是一个秘密答案。您不需要在其他视图控制器中调用方法。你一定要重新设计应用程序,因为这个问题迟早会追上你,而且修复起来会更加困难。
标签: ios uiviewcontroller