Как вы сказали, вы не можете вызвать presentModalViewController в классе UIView. Это похоже на прекрасную возможность использовать делегата. Вы могли бы сделать что-то вроде:
В MyGameView.h
@protocol MyGameViewDelegate
- (void)showSecondView;
@end
@interface MyGameView {
}
@property (nonatomic, assign) id <MyGameViewDelegate> delegate;
...
@end
В MyGameView.m, когда вам нужно показать второй вид:
[self.delegate showSecondView];
В MyGameViewController.h:
#import "MyGameView.h"
@interface MyGameViewController : UIViewController <MyGameViewDelegate> {
...
В MyGameViewController.m:
#pragma mark MyGameViewDelegate methods
- (void)showSecondView {
[self goToSecondView];
}
Обратите внимание, что вам также необходимо установить MyGameViewController в качестве делегата MyGameView. Вы можете сделать это в Интерфейсном Разработчике или в коде, в зависимости от того, где вы создали два объекта.
Чтобы сделать это в коде, например, в методе MyDameViewController.h viewDidLoad:
myGameView.delegate = self;