NewView отображается в PopOver вместо newView - PullRequest
0 голосов
/ 08 февраля 2012

В моем PopOver выбрано правильное представление, но вместо отображения в родительском представлении оно отображается в PopOverView.

Вот несколько снимков экрана: PopOver

После выбора отзываВместо этого, вместо этого отображается представление в моем родительском представлении, которое в моем случае - SecondViewController (серый фоновый экран), которое оно показывает в самом PopOver.

Selected View from PopOver

Для информации у меня есть три VC, а именно FirstViewController, SecondViewController и ThirdViewController каждый назначен каждому элементу TabBar.Я хочу сделать SecondViewController родительским для PopOver.

Вот мой код, в котором я создаю PopOver в моем AppDelegate.m

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if([viewController isKindOfClass:[SecondViewController class]]){
        NSInteger index = [[self tabBarController] selectedIndex];
        CGRect buttonFrame = [[[[[self tabBarController] tabBar] subviews] objectAtIndex:index+1] frame];

        PopOverViewController *popoverContentController = [[PopOverViewController alloc]init];            

        UINavigationController *navcon = [[UINavigationController alloc]initWithRootViewController:popoverContentController];

        popoverContentController.contentSizeForViewInPopover = CGSizeMake(250, 85);
        popover = [[UIPopoverController alloc]initWithContentViewController:navcon];


        NSLog(@"X:%f Y:%f",buttonFrame.origin.x,buttonFrame.origin.y);

        [popover presentPopoverFromRect:buttonFrame inView:self.tabBarController.tabBar permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

    }
}

И код в моем PopOverController.m, где я нахожусьсделав выбор, какое новое представление показывать

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    sendFeedback *sendEmailViewController = [[sendFeedback alloc]initWithNibName:@"sendFeedback" bundle:nil];

    downLoad *downloadFilelViewController = [[downLoad alloc]initWithNibName:@"downLoad" bundle:nil];

    if (indexPath.row == 0)
        [self.navigationController pushViewController:sendEmailViewController animated:YES];
   else
       [self.navigationController pushViewController:downloadFilelViewController animated:YES];
}   

Может кто-нибудь дать мне знать, как я могу сделать ссылку на родительское представление (SecondViewcontroller), чтобы новое представление отображалось в моем родительском представлении, а не во всплывающем окне?просмотр.

Спасибо

1 Ответ

0 голосов
/ 08 февраля 2012

Вы вставляете в popover UINavigationController и в didSelectRowAtIndexPath помещаете вновь созданный контроллер в существующий стек (в popover UINavigationController), но не в панель вкладок.

Чтобы переместить вновь созданный контроллер на вторую вкладку, вам нужно назначить вторую вкладку (теперь это SecondViewController) новому UINavigationController и использовать именно этот стек навигации.

Код будет выглядеть так:

UINavigationController *navController = (UINavigationController*)[tabBarController.viewControllers objectAtIndex:1];
[navController pushViewController:downloadFilelViewController animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...