Как и другие ближайшие к iOS8, я получаю предупреждение:Представляя контроллеры вида на отдельном ... - иногда
Presenting view controllers on detached view controllers is discouraged <EditItineraryViewController: 0x7ca56e00>.
Это вызвано следующим кодом:
- (void)editActivityDetailsForIndexPath:(NSIndexPath *)indexPath {
NSPredicate *predicateForDisplay = [[NSPredicate alloc] init];
switch (indexPath.section) {
case kIncompleteActivitiesSection:
predicateForDisplay = _predIncomplete;
break;
case kCompleteActivitiesSection:
predicateForDisplay = _predComplete;
break;
default:
break;
}
NSString *theActivityName = [[NSString alloc] init];
theActivityName = [[[_activitiesArray filteredArrayUsingPredicate:predicateForDisplay] objectAtIndex:indexPath.row] activityName];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ActivityDetailViewController *activityDetailVC = [storyboard instantiateViewControllerWithIdentifier:@"ActivityDetailView"];
activityDetailVC.modalPresentationStyle = UIModalPresentationFormSheet;
activityDetailVC.delegate = self;
// send the activity to the view
activityDetailVC.theActivity = [[_activitiesArray filteredArrayUsingPredicate:predicateForDisplay] objectAtIndex:indexPath.row];
// configure the look of the view
_activityDetailsPopover = [[UIPopoverController alloc] initWithContentViewController:activityDetailVC];
_activityDetailsPopover.delegate = self;
ItineraryCell *cell = (ItineraryCell *)[self.itineraryTableView cellForRowAtIndexPath:indexPath];
activityDetailVC.contentView.backgroundColor = [UIColor whiteColor];
activityDetailVC.navigationBar.barTintColor = _colorSchemeLightColor;
activityDetailVC.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:_colorSchemeColor};
activityDetailVC.saveButton.tintColor = _colorSchemeColor;
activityDetailVC.cancelButton.tintColor = _colorSchemeColor;
activityDetailVC.labelB.textColor = _colorSchemeColor;
activityDetailVC.labelM.textColor = _colorSchemeColor;
activityDetailVC.activityTitle.textColor = _colorSchemeColor;
activityDetailVC.activityTitle.font = [UIFont boldSystemFontOfSize:17.0];
// present the view
[_activityDetailsPopover presentPopoverFromRect:cell.cellDetailsButton.frame inView:cell.cellDetailsButton.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Это iPad, и в этом случае popover представляется таким образом, чтобы его маленький указатель указывал на значок «i», который находится на ячейке tableview в виде таблицы.
Это работает в трех других местах моего приложения, не вызывая предупреждения вообще. Но по какой-то причине, с этой реализацией, это вызывает предупреждение. Странно то, что это было первое место в моем приложении. Я использовал это средство для представления popover из ячейки tableview, а другие экземпляры - только копии этого кода!
Любые идеи, на что я могу смотреть, чтобы выяснить, где искажена иерархия? Связано ли это с тем, как генерируется ячейка tableview, а затем этот popover представлен поверх нее или он должен делать строго с самим popover? Или это может быть связано с таблицей. Я даже не знаю, с чего начать смотреть.
Большое спасибо!
Может ли кто-нибудь помочь мне с этим? – Kent
Вы нашли ответ? У меня такая же проблема – silvaric