Я думаю, что ваша проблема - внешний дисплей. Создайте viewcontroller вне вашего кода (возможно, просто добавьте новый файл ViewController и поместите материал в .xib) и попробуйте его, чтобы убедиться, что viewcontroller работает, прежде чем вызывать его на внешний дисплей. Вот ваш код с моими предлагаемыми изменениями - [mainViewController view] - это viewcontroller, который вы создали снаружи.
//Code to detect if an external display is connected to the iPad.
NSLog(@"Number of screens: %d", [[UIScreen screens]count]);
//Now, if there's an external screen, we need to find its modes, iterate
//through them and find the highest one. Once we have that mode, break out,
//and set the UIWindow.
if([[UIScreen screens]count] > 1) //if there are more than 1 screens connected
//to the device
{
CGSize max;
UIScreenMode *maxScreenMode;
for(int i = 0; i < [[[[UIScreen screens] objectAtIndex:1] availableModes]count]; i++)
{
UIScreenMode *current = [[[[UIScreen screens]objectAtIndex:1]availableModes]objectAtIndex:i];
if(current.size.width > max.width);
{
max = current.size;
maxScreenMode = current;
}
}
//Now we have the highest mode. Turn the external display to use that mode.
UIScreen *external = [[UIScreen screens] objectAtIndex:1];
external.currentMode = maxScreenMode;
//Boom! Now the external display is set to the proper mode. We need to now
//set the screen of a new UIWindow to the external screen
UIWindow *newwindow = [UIWindow alloc];
[newwindow addSubview:[mainViewController view]];
newwindow.screen = external;
[newwindow makeKeyAndVisible];
[newwindow setHidden:NO];
}