Можно ли запустить блок кода только в том случае, если пользователь использует iPhone против iPad?
У меня есть мастер-приложение, которое отлично работает на iPad. Тем не менее, версия для iPhone не работает, потому что переменная, которая отправляется на DetailViewController
в версии для iPad не отправляет на айфон DetailViewController
, Я могу исправить это с помощью одной строки кода в MasterViewController
реализация:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
self.detailViewController=segue.destinationViewController;
}
К сожалению, когда я реализую этот код, версия для iPad перестает работать. Я получаю исключение, когда я иду от другого контроллера представления (HomeViewController
) вернуться к DetailViewController
, Этот журнал ошибок:
2012-07-14 14:29:12.924 46 Tracker[2772:11603] -[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0
2012-07-14 14:29:12.925 46 Tracker[2772:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0'
*** First throw call stack:
(0x148a022 0x201acd6 0x148bcbd 0x13f0ed0 0x13f0cb2 0x2cb0 0x2d75c5 0x2d77fa 0xb6c85d 0x145e936 0x145e3d7 0x13c1790 0x13c0d84 0x13c0c9b 0x16a07d8 0x16a088a 0x246626 0x1fdd 0x1f45)
terminate called throwing an exception(lldb)
Итак, есть ли способ, которым я могу запустить этот первый блок кода, только когда пользователь находится на iPhone? Или я могу исправить код, чтобы он правильно работал на обоих устройствах?
Вот ссылка на мою раскадровку iPad, чтобы (надеюсь) сделать это более ясным. У меня проблема, когда я нажимаю на ячейку таблицы ПОСЛЕ перехода от HomeViewController
вернуться к DetailViewController
: http://www.grapekeeper.com/storyboards.png
1 ответ
Возможно следующее?
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// perform iPad logic
} else {
// perform iPhone logic
}