如何从另一个类引用我的MainViewController?

时间:2010-06-12 16:08:26

标签: iphone reference

我正在构建一个使用UIImageView显示动画的iPhone Utility应用程序。在MainViewController的viewDidLoad()方法中,我创建一个CustomClass的实例,然后设置动画:

- (void)viewDidLoad 
{
 [super viewDidLoad]; 
 cc = [CustomClass new];

 NSArray * imageArray = [[NSArray alloc] initWithObjects:
          [UIImage imageNamed:@"image-1-off.jpg"],
          [UIImage imageNamed:@"image-2-off.jpg"],
          [UIImage imageNamed:@"image-3-off.jpg"],
          [UIImage imageNamed:@"image-4-off.jpg"],
          nil];
 offSequence = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
 offSequence.animationImages = imageArray;
 offSequence.animationDuration = .8;
 offSequence.contentMode = UIViewContentModeBottomLeft;
 [self.view addSubview:offSequence];
 [offSequence startAnimating];
}

工作正常。但是,我希望能够将上面设置UIImageView的代码移动到我的CustomClass中。问题出现在倒数第二行:

[self.view addSubview:offSequence];

我基本上需要用对MainControllerView的引用替换'self',所以我可以在CustomClass中调用addSubview。我尝试创建一个名为mvc的CustomClass实例var和一个setter方法,该方法将MainViewController引用作为参数:

- (void) setMainViewController: (MainViewController *) the_mvc 
{
 mvc = the_mvc;
}

然后我在MainViewController中调用它,如下所示:

[cc setMainController:MainViewController:self];

但这会产生各种各样的错误,我可以在这里发布,但令我感到震惊的是,我可能会过于复杂。有没有更简单的方法来引用实现我的CustomClass的MainViewController?

1 个答案:

答案 0 :(得分:0)

最简单的方法是创建UIImageView的子类并创建一个接受该数组的自定义初始化程序。所以,

@interface MyCustomImageView:UIImageView {
//...
}

-(id) initWithFrame(CGRect) aRect animationImages:(NSArray *) imageArray;
@end

然后在主视图控制器中,只需初始化自定义图像视图,填充它并将其添加到子视图中。这将使一切都很好地封装,模块化和可重用。