1

У меня есть UIPopoverController, которые состоят из табличного вида. Этот поп-контроллер был хорошо отображен, и я уже отлично установил делегат didSelectRowAtIndexPath.Навигация внутри UIPopoverController

Прямо сейчас, я хочу сделать переход в «контроллер подробных представлений» на основе щелчка по элементу таблицы. Затем на целевом представлении у него есть кнопка возврата, как pushViewController, но она не работает. Он не будет перемещаться в контроллер детального представления. Это мой didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    DetailSummaryViewController *detailVC = [[DetailSummaryViewController alloc] initWithNibName:@"DetailSummaryViewController" bundle:nil]; 
    [self.navigationController pushViewController:detailVC animated:YES]; 
} 

Это мой метод popupover

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CalendarCell *cell = (CalendarCell *)[collectionView cellForItemAtIndexPath:indexPath]; 

    UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:[SummaryViewController new]]; 
    [popC setPopoverContentSize:CGSizeMake(320, 400)]; 
    [self setPop:popC]; 

    [[self pop] presentPopoverFromRect:[cell frame] 
           inView:collectionView 
       permittedArrowDirections:UIPopoverArrowDirectionAny 
           animated:YES]; 
} 

Те навигации не будет работать, но если я NSLog-джеями выбран индекс работает хорошо. Есть ли какой-то шаг в настройке навигации, которую я пропустил?

+0

ответ ниже (по Raica) является способ ее решить. – Nishant

ответ

2

Вы выигрыш, Навигационный контроллер а в контроллере поповер, так что не будет работать метод self.navigationController pushViewController , Попробуйте это ниже:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CalendarCell *cell = (CalendarCell *)[collectionView cellForItemAtIndexPath:indexPath]; 

    UINavigationController *insidePopoverNavigationController = [[UINavigationController alloc] initWithRootViewController:[SummaryViewController new]]; 

    UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:insidePopoverNavigationController]; 
    [popC setPopoverContentSize:CGSizeMake(320, 400)]; 
    [self setPop:popC]; 

    [[self pop] presentPopoverFromRect:[cell frame] 
           inView:collectionView 
       permittedArrowDirections:UIPopoverArrowDirectionAny 
           animated:YES]; 
} 

Дополнительные кредиты: Raica Думитру Cristian

+0

Привет, Нишан! Спасибо, это сработало! –

3

при создании UIPopoverController, вместо установки MyViewController внутри UIPopoverController, вы должны установить UINavigationController

UINavigationController *insidePopoverNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController]; 
    popoverController = [[UIPopoverController alloc] initWithContentViewController:insidePopoverNavigationController]; 
    ...... 
    [popoverController presentPopoverFromRect:... etc]; 

 Смежные вопросы

  • Нет связанных вопросов^_^