Мне было интересно, может ли кто-нибудь объяснить это мне. Я создаю универсальное приложение, используя раскадровки. Версия для iPhone имеет навигационный контроллер с основным представлением списка, а затем представлением вложенного списка (оба являются контроллерами табличного представления.
Приложение для iPad использует контроллер с разделенным представлением для достижения того же результата, что и для iphone (основной список с подробным списком). Все хорошо, однако при использовании перехода «заменить» для перехода к новому подробному представлению на контроллере разделенного представления мне нужно встроить новые подробные представления в свой собственный навигационный контроллер, тогда как мне не нужно делать это на iphone (это уже внутри навигационного контроллера. (Надеюсь, это имеет смысл)
Мой код (который работает) выглядит так:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NotesListViewController *listNotesView;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
listNotesView = [[segue destinationViewController] topViewController];
} else {
listNotesView = [segue destinationViewController];
}
if ([segue.identifier isEqualToString:@"NotesByDate"]) {
[listNotesView setGroupType:@"date"];
} else if ([segue.identifier isEqualToString:@"NotesByTopic"]) {
[listNotesView setGroupType:@"topics"];
} else if ([segue.identifier isEqualToString:@"NotesBySpeaker"]) {
[listNotesView setGroupType:@"speaker"];
}
Итак... Проблема в том, что первое условие оператора IF генерирует предупреждение (несовместимый тип указателя, присвоенный NoteListViewController из UIViewController). Однако это не UIViewController, а UITableViewController. В версии для iPhone это БУДЕТ UIView, но я специально проверяю здесь iPad.
Как я уже сказал, это работает, так что, возможно, это на самом деле не проблема, но меня немного раздражает постоянно появляющееся предупреждение, и я не уверен, как/могу ли я это исправить.
Я постараюсь немного опубликовать изображения раскадровки, надеюсь, это поможет объяснить это.