Я сделал книгу для детей. Каждая страница является ViewController. В начале я делал все переключения ViewControllers в AppDelegate, но после проблем с AutoRotation я делал все переключения в другом ViewController, который называется ViewControllerSwitch.
Раньше код был таким. В AppDelegate:
- (void)goToNextPage3 {
self.view3 = [[[ViewController3 alloc] init] autorelease];
view3.view.frame = CGRectMake(769, 0, 768, 1024);
[window addSubview:view3.view];
[UIView …SomeAnimationStuff...];
[UIView setAnimationDidStopSelector:@selector(animationDidStop3:finished:context:)];
}
- (void)animationDidStop3:(NSString *)animationID finished:(NSNumber *)finished context: (void *)context {
[self.view1a.view removeFromSuperview];
self.view1a = nil;
}
А вот код одного из моих контроллеров представления («страниц») с именем ViewController1a:
- (void)buttonClicked {
MyBookAppDelegate* next2 =(MyBookAppDelegate *) [[UIApplication sharedApplication] delegate];
[next2 goToNextPage3];
}
Это сработало как шарм.
Теперь все мои переключения находятся в ViewControllerSwitch. Как мне изменить код в ViewController1a для доступа к goToNextPage3?
Я пробовал это:
- (void)buttonClicked {
ViewControllerSwitch* next2 = (ViewControllerSwitch *) [[UIApplication sharedApplication] delegate];
[next2 goToNextPage3];
}
Это дает мне SIGABRT на [next2 goToNextPage3].
Есть идеи?
Обновление:
Я все еще пытаюсь, так что теперь я сделал это:
в моем Viewcontroller1a.h:
#import <UIKit/UIKit.h>
#import "ViewControllerSwitch.h"
@class ViewController2;
@class ViewControllerSwitch;
@protocol ViewController1Delegate;
@interface ViewController1a : UIViewController
{
id<ViewController1aDelegate>myDelegate;
}
@property(nonatomic, assign)id<ViewController1Delegate>myDelegate;
@end
@protocol ViewController1Delegate
-(void)goToNextPageV;
@end
и в моем .m файле:
- (void)buttonClicked {
[self.myDelegate goToNextPageV];
}
я знаю, что в ViewControllerSwitch чего-то не хватает, но я не знаю, что.