Хорошо, я думаю, что это возможно. Я неправильно понял, как реализовать внешний экран на iPad, и это вызывает у меня много головной боли. Поскольку это длинный пост, я пытаюсь создать и отправить представление на внешний экран через VGA и удалить экран, как только я закончу с ним.У меня проблемы с подсчетом, поэтому я не могу заставить его работать.
У меня есть контроллер представления, который можно вызвать на iPad в любое время.Когда это представление загружается (оно является удаленным, аналогично представлению Keynote), я проверяю внешний экран, затем создаю окно и добавляю представление на дополнительный монитор.
в моем ipadViewController.h
<-вид, который остается на iPad </p>
У меня есть
@interface ipadViewController : UIViewController {
PresentationViewController *presentationView;
UIScreen *externalScreen;
UIWindow *externalWindow;
}
@property (nonatomic, retain) UIScreen *externalScreen;
@property (nonatomic, retain) UIWindow *externalWindow;
@property (nonatomic, retain) PresentationViewController *presentationView;
@end
(есть еще, но это внешний экран материал).
в ipadViewController.m
:
@synthesize externalScreen;
@synthesize externalWindow;
@synthesize presentationView;
Поэтому я пытаюсь сделать несколько вещей при загрузке представления:
Получить внешний экран (если возможно) Создать presentationViewController
и добавить его на дополнительный экран
- (void)viewDidLoad {
[super viewDidLoad];
[self getExternalScreen];
[self createPresentationAndSendToWindow];
}
чтобы получить экран, я делаю следующее getExternalScreen:
:
if ([[UIScreen screens] count] > 1)
{
for (UIScreen *currentScreen in [UIScreen screens])
{
if (currentScreen != [UIScreen mainScreen])
self.externalScreen = [currentScreen autorelease];
}
}
и отправляю на него представление createPresentationAndSendToWindow:
:
if (self.presentationPath == nil) return;
PresentationViewController *viewController = [[PresentationViewController alloc] initWithNibName:@"CanvasPresentation" bundle:nil];
self.presentationView = viewController;
[viewController release];
if (self.externalWindow == nil)
{
CGRect externalBounds = [self.externalScreen bounds];
self.externalWindow = [[[UIWindow alloc] initWithFrame:externalBounds] autorelease];
[self.externalWindow addSubview:self.presentationView.view];
self.externalWindow.screen = self.externalScreen;
[self.externalWindow makeKeyAndVisible];
}
in dealloc
Я пытаюсь очистить:retain count = 2.
Авария, вызванная externalWindow release
, исчезает, если я не отпускаю presentationView
(но затем я подтекаю presentationView
.