переключение ViewController в AppDelegate - не отображается

застрял на этом, прошу совета.

Чем я занимался и мой проект: делаю книгу для детей. Каждая страница представляет собой собственный ViewController. На каждой странице у меня есть кнопка для следующей и предыдущей страницы. Я использую AppDelegate для загрузки ViewControllers. Мой AppDelgate начинается с ViewController1, и когда я нажимаю кнопку/пролистываю в ViewController1, он должен загрузить ViewController2, но ничего не происходит.

Мой код в AppDelegate:

self.view1 = [ViewController1 alloc];
[window addSubview:view1.view];
[window makeKeyAndVisible];

- (void)goToNextPage {
    view2 = [ViewController2 alloc];    
    UIView *current = self.window;
    [self.window addSubview:view2.view];

    CATransition *animationT = [CATransition animation];
    [animationT setDuration:0.5];
    [animationT setType:kCATransitionMoveIn];
    [animationT setSubtype:kCATransitionFromRight];
    [animationT setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [[current layer] addAnimation:animationT forKey:@"SwitchToView1"];

 NSLog(@"works2");
}

Вот мой ViewController1:

- (void)addButtonNext { 
     UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector       (buttonClicked:)] autorelease];
    swipeGesture.numberOfTouchesRequired = 1;
    swipeGesture.direction = (UISwipeGestureRecognizerDirectionLeft);
    [self.view addGestureRecognizer:swipeGesture];
    NSLog(@"works0");
}


- (void)buttonClicked:(id)sender {
    NSLog(@"works1");
    AppDelegate* next = [AppDelegate alloc];
    [next goToNextPage];
}

Моя консоль говорит works0 works1 works2. Есть идеи?

заранее спасибо


person Planky    schedule 17.07.2011    source источник
comment
Я думаю, вам следует сначала взглянуть на главу о распределении/инициализации в руководстве Apple по Objective-C. Похоже, вы плохо поняли эти самые фундаментальные понятия. Вы всегда никогда не вызываете alloc без связанного метода инициализации.   -  person tomk    schedule 17.07.2011
comment
с раствором фараджнева работает. спасибо за ваше время. я сейчас прочитаю.   -  person Planky    schedule 18.07.2011


Ответы (2)


Не выделяйте делегат приложения, который вам нужен, чтобы справиться с ним, как это

AppDelegate *next =(AppDelegate *) [[UIApplication sharedApplication] delegate];
[next goToNextPage];
person farajnew    schedule 17.07.2011

Кажется, вы не инициализировали второй контроллер представления:

view2 = [ViewController2 alloc];
person Community    schedule 17.07.2011
comment
@tomk, совершенно верно, но я понимаю это и многие другие после более глубокого прочтения кода, и теперь я считаю, что его проблема может быть где угодно .. - person ; 17.07.2011