Я внедрил MGSplitViewController, где у меня есть 6 строк в masterviewcontroller, и каждый из них загружает новый UIViewController в контроллер detailviewcontroller - я следовал примеру проекта Apple, используя несколько контроллеров подробного представления. Но у меня есть пара странных проблем.MGSplitViewController с несколькими контроллерами подробного представления
Во-первых, при начальной загрузке первый выбранный контроллер detailview отлично отображает. Однако, когда я выбираю разные строки в masterviewcontroller для изменения контроллера подробного представления, строка выбирается, но контроллер detailview не изменяется - это продолжается так, как это происходит за несколько кликов, - тогда все работает нормально.
Ну, почти, теперь, когда новый контроллер detailview фактически загружает, иногда взгляды становятся наложенными. Например, если я сначала выберу элемент управления detailview с представлением таблицы, а затем выберите тот, у которого есть только несколько кнопок, - кнопки отображаются наложением вида tableview. Если кто-то может понять, что я делаю неправильно, пожалуйста, дайте мне знать. Вот мой метод selectrow.
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
/*
Create and configure a new detail view controller appropriate for the selection.
*/
switch (indexPath.row) {
case 1:
{
self.splitViewController.detailViewController = self.postViewController;
// popover = [[UIPopoverController alloc] initWithContentViewController:self.postViewController];
// [popover presentPopoverFromRect:CGRectMake(200, 0, 100, 100)
// inView:self.splitViewController.view
// permittedArrowDirections:UIPopoverArrowDirectionAny
// animated:YES];
break;
}
case 2:
self.splitViewController.detailViewController = self.latestViewController;
break;
case 3:
self.splitViewController.detailViewController = self.categoriesViewController;
break;
case 4:
self.splitViewController.detailViewController = self.messagesViewController;
break;
case 5:
self.splitViewController.detailViewController = self.searchViewController;
break;
case 6:
self.splitViewController.detailViewController = self.accountViewController;
break;
default:
break;
}
}
Я полагаю, вы не используете ARC с вашим приложением. Вы не хотите удалять предыдущий detailViewController из супервизора перед назначением нового? Каковы ваши свойства всех элементов detailViewControllers? –
Извините, я использую ARC. Как я могу их удалить? Я попытался установить их в ноль, но получить ошибку компилятора. Все элементы detailViewControllers являются UINavigationControllers, которые (неатомные, сильные). – xizor
Нет, с ARC вам не нужно их выпускать, но перед назначением нового подробного представления вы можете попробовать что-то вроде 'if (self.splitViewController.detailViewController) [self.splitViewController.detailViewController.view removeFromSuperview];' –