0

アプリの設計を大まかに失敗したような気がします。現在、1 つのコントローラー、App Delegate、2 つの UIView (1 つは Scrollview のサブクラス)、およびコントローラー用の 1 つの nib があります。

IB では、ファイル所有者のクラスを MusicGridController に設定し、UIView のクラスを MusicGridView に設定しました。したがって、これらのクラスのインスタンスは nib によってインスタンス化されますよね? 次に、MusicGridView の上に重ねたい UIScrollView があります。アプリデリゲートでは、これを行いました:

@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 インスタンスに渡す必要があることですが、それを適切なインスタンスに渡す方法がわかりません。

理想的には、おそらく MusicGridView を UIScrollView サブクラスの init メソッドにロードし、UIView を UIScrollView サブクラスのインスタンスにする必要があると思います。それはうまくいくでしょうか?

4

1 に答える 1

1

あなたの質問全体にどのように対処すればよいかわかりません。しかし、現在のアーキテクチャでは、MVC パラダイムに従っていないと言えます。アプリ デリゲートはアプリケーションを軌道に乗せる必要がありますが、クラスの内部責任のためにアプリ デリゲートにコードを追加する必要はありません。

プロパティ scrollView は必要ないはずです(私は信じていません)

scrollView の構成は、それが含まれているビューのコントローラー (MusicGridView?) によって処理される必要があります。その scrollView オブジェクトには何が含まれていますか?

scrollView が UINavigationController のルート ビューである場合、おそらく UINavigationController のサブクラスで scrollview インスタンスをセットアップする必要があります。

アップデート:

から:

理想的には、おそらく MusicGridView を UIScrollView サブクラスの init メソッドにロードし、UIView を UIScrollView サブクラスのインスタンスにする必要があると思います。それはうまくいくでしょうか?

ここでのあなたの考えは正しいと思います。scrollview/MusicGridView オブジェクトが表すものを混同しました。

于 2009-06-11T20:49:28.820 に答える