Можно ли запустить блок кода только в том случае, если пользователь использует 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
}
Другие вопросы по тегам