我正在构建一个使用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?
答案 0 :(得分:0)
最简单的方法是创建UIImageView的子类并创建一个接受该数组的自定义初始化程序。所以,
@interface MyCustomImageView:UIImageView {
//...
}
-(id) initWithFrame(CGRect) aRect animationImages:(NSArray *) imageArray;
@end
然后在主视图控制器中,只需初始化自定义图像视图,填充它并将其添加到子视图中。这将使一切都很好地封装,模块化和可重用。