У меня есть контроллер представления в Cocoa Touch, который определяет, когда устройство вращается, и переключается между представлениями двух контроллеров представления, которые у него есть: альбомной и портретной.
Я хочу, чтобы UIViewControllers
в нем имели доступ к FRRRotatingViewController
, точно так же, как все UIViewController
могут получить доступ к UINavigationController
, они внутри.
Итак, я создал подкласс UIViewController
( FRRViewController
), у которого будет свойство rotatingViewController
.
Я также модифицировал FRRRotatingViewController
, поэтому он использует FRRViewController
вместо обычных UIViewControllers
.
К сожалению, когда я включаю FRRRotatingViewController.h
в FRRViewController.h
(и наоборот), я, кажется, сталкиваюсь с проблемой циклического импорта. Не знаю, как это исправить. Есть предложения?
Вот код:
//
// FRRViewController.h
#import <UIKit/UIKit.h>
#import "FRRRotatingViewController.h"
@interface FRRViewController : UIViewController
@end
//
// FRRRotatingViewController.h
#import <UIKit/UIKit.h>
#import "FRRViewController.h"
@class FRRRotatingViewController;
@protocol FRRRotatingViewControllerDelegate
-(void) FRRRotatingViewControllerWillSwitchToLandscapeView: (FRRRotatingViewController *) sender;
-(void) FRRRotatingViewControllerWillSwitchToPortraitView: (FRRRotatingViewController *) sender;
@end
@interface FRRRotatingViewController : FRRViewController {
// This is where I get the error:Cannot find interface declaration for
// 'FRRViewController', superclass of 'FRRRotatingViewController'; did you
// mean 'UIViewController'?
}
@property (strong) UIViewController *landscapeViewController;
@property (strong) UIViewController *portraitViewController;
@property (unsafe_unretained) id<FRRRotatingViewControllerDelegate> delegate;
-(FRRRotatingViewController *) initWithLandscapeViewController: (UIViewController *) landscape andPortraitViewController: (UIViewController *) portrait;
-(void) deviceDidRotate: (NSNotification *) aNotification;
@end