MVC Вопрос ... где разместить код в контроллере и как сделать гнездо подклассов UIView - PullRequest
0 голосов
/ 12 июня 2009

У меня такое ощущение, что я испортил дизайн моего приложения на высоком уровне. Прямо сейчас у меня есть один Контроллер, Делегат приложения, Два UIViews (один является подклассом Scrollview) и одно перо для контроллера.

В IB я установил класс владельца файла на MusicGridController, а затем установил класс UIView на MusicGridView. Таким образом, экземпляры этих классов создаются пером, верно? Затем у меня есть UIScrollView, который я хочу разместить поверх MusicGridView. В приложении Delegate я сделал это:

@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 в окно, а затем представление контроллера как подпредставление scrollView.

Я думаю, что я в корне запутался в архитектуре. Почти весь код, который до сих пор взаимодействует с пользователем, находится в моем MusicGridView, а контроллер буквально ничего не делает.

Моя проблема, с которой я сейчас сталкиваюсь, заключается в том, что мне нужно передать сенсорные события из UIScrollview в экземпляр MusicGridView, но я не знаю, как передать его нужному экземпляру.

В идеале, я думаю, мне, вероятно, следует загрузить MusicGridView в метод init подкласса UIScrollView, а затем, возможно, UIView будет экземпляром подкласса UIScrollView. Будет ли это работать?

1 Ответ

1 голос
/ 12 июня 2009

Я не знаю, как ответить на ваш вопрос в целом. Но я могу сказать вам, что с вашей текущей архитектурой вы не следуете парадигме MVC. Делегат приложения должен начать работу с вашим приложением, но вам не нужно добавлять код в делегат приложения для внутренних обязанностей ваших классов.

Свойство scrollView не нужно (я не верю)

Конфигурация scrollView должна обрабатываться любым контроллером представления (MusicGridView?), В котором он содержится. Что связано с этим объектом scrollView?

Если scrollView является корневым представлением в UINavigationController, то, возможно, ваш подкласс UINavigiationController должен настроить ваш экземпляр scrollview.

Обновление:

От:

В идеале, думаю, мне следует загрузить MusicGridView в методе init подкласса UIScrollView, а затем может быть, UIView будет примером подкласса UIScrollView. Было бы эта работа?

Я считаю, что ваша идея здесь верна. Я перепутал то, что должны были представлять ваши объекты scrollview / MusicGridView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...