我有一种感觉,我从高层次上搞砸了我的应用程序的设计。现在,我有一个控制器、应用程序委托、两个 UIView(一个是 Scrollview 的子类)和一个用于控制器的 nib。
在 IB 中,我将文件所有者的类设置为 MusicGridController,然后将 UIView 的类设置为 MusicGridView。因此,这些类的实例由 nib 实例化,对吗?然后,我有一个 UIScrollView,我想在 MusicGridView 之上分层。在应用程序代表中,我这样做了:
@synthesize window;
@synthesize viewController;
@synthesize scrollView;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
//[application setStatusBarHidden:YES animated:NO];
//[window addSubview:viewController.view];
scrollView.contentSize = CGSizeMake(480, 480);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.alwaysBounceVertical = NO;
scrollView.alwaysBounceHorizontal = NO;
// scrollView.maximumZoomScale = 4.0;
// scrollView.minimumZoomScale = 0.75;
scrollView.delegate = self;
// [viewController.view addSubview:scrollView];
[window addSubview:scrollView];
[scrollView addSubview:viewController.view];
[window makeKeyAndVisible];
}
所以,我将scrollView子类添加到窗口中,然后将Controller的视图作为scrollView的子视图。
我认为我从根本上搞砸了架构。到目前为止,几乎所有与用户交互的代码都在我的 MusicGridView 中,而控制器实际上什么都不做。
我现在遇到的问题是我需要将触摸事件从 UIScrollview 传递给 MusicGridView 实例,但我不知道如何将它传递给正确的实例。
理想情况下,我认为我应该在 UIScrollView 子类的 init 方法中加载 MusicGridView,然后可能让 UIView 成为 UIScrollView 子类的实例。那行得通吗?