2016-06-06 3 views
1

У меня есть ViewController, что при нажатии на кнопку barButton отображается всплывающее представление. Поперечное представление представляет собой контроллер табличного представления,Popover Controller не отображает меня правильно

Проблема заключается в том, что при отображении popover он просто показывает представление (а не представление таблицы).

enter image description here Но когда popover уволен, вы можете увидеть, что он очень быстро переключается на настольный просмотр, прежде чем он исчезнет.

enter image description here Зачем это было?

Update: Добавлен popController.sourceView = sender; в конце здесь в @sticker:

- (IBAction)pressedButton:(id)sender { 
    NSLog(@"Pressed Button"); 

    // grab the view controller we want to show 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Pop"]; 

    // present the controller 
    // on iPad, this will be a Popover 
    // on iPhone, this will be an action sheet 
    controller.modalPresentationStyle = UIModalPresentationPopover; 
    [self presentViewController:controller animated:YES completion:nil]; 

    // configure the Popover presentation controller 
    UIPopoverPresentationController *popController = [controller popoverPresentationController]; 
    popController.permittedArrowDirections = UIPopoverArrowDirectionAny; 
    popController.barButtonItem = self.barbutton; 
    popController.delegate = self; 

    // Added per @sticker 
    popController.sourceView = sender; 
} 

Также удостоверился PopTableViewController был <UITableViewDelegate, UITableViewDataSource> наверняка.

Я все еще получаю не TableView показывая, пока поповер не получает уволенный:

enter image description here

(ниже то, что происходит, как только поповер уволен и анимировать прочь)

enter image description here

+1

вам нужно установить sourceView для popController и не забудьте установить источник данных и делегат для представления в таблице. – Nick

+0

@sticker Спасибо за ответ! Поэтому в моем 'ViewController' в конце' нажатой кнопки: 'я добавил' popController.sourceView = sender; ', затем я пошел в' PopTableViewController' и убедился, что у него есть ''. Я получаю правильные строки представления таблицы, но пока не покажу их в представлении таблицы (пока я не отпущу popover, тогда он по-прежнему отображает табличное представление для быстрой секунды, поскольку он уволен). Я пропустил какую-либо часть вашего предложения, или вы знаете, что мне нужно? Благодаря! – SRMR

+0

@sticker вы знаете, что, если у вас нет каких-либо других идей, может быть, это просто ошибка в симуляторе по http://stackoverflow.com/a/34108147/4205674 – SRMR

ответ

1

Я просто попробовал этот, и он отлично работает Надеюсь, он поможет вам

self.tbVC.modalPresentationStyle = UIModalPresentationPopover; 
    UIPopoverPresentationController *popOverVC = [self.tbVC popoverPresentationController]; 
    popOverVC.barButtonItem = sender; 
    popOverVC.permittedArrowDirections = UIPopoverArrowDirectionAny; 


    [self presentViewController:_tbVC animated:YES completion:nil]; 
+0

Спасибо за помощь! – SRMR

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