2014-05-25 2 views
2

Я пытаюсь отобразить простой iPad popover, который содержит navigationController с tableView.UIPopover с UINavigationController и UITableView: делегаты tableView не вызываются

popover -> контроллер навигации -> контроллер просмотра -> вид таблицы.

Мне нужен навигационный контроллер, потому что при касании я хочу нажать другой viewController (внутри этого же popover).

Без контроллера навигации все в порядке. Но как только я ставлю viewController внутри навигационного контроллера, tableView перестает отвечать (didSelectRow не вызывается). Я полагаю, что с моими делегатами что-то не так, но я просто не могу это решить.

. Навигационный контроллер отлично реагирует (я могу нажать кнопку, которую я имею в верхней панели)

. Кнопки, которые находятся в ячейках, реагируют нормально.

. Если я касаюсь и удерживаю ячейку, она подсвечивается, но не выбирается.

UPDATE: Я только выяснил, что если я удерживаю ячейку в течение хотя бы секунды, делегат вызывается, когда я его отпускаю. любой меньше, чем это, и он никогда не называется ... ???

Здесь используйте код:

ModalViewController* controllerWithTable = [[self storyboard] instantiateViewControllerWithIdentifier:identifier]; 

UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:controllerWithTable]; 

UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:navigationController]; 
popover.delegate = self; 

[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

ответ

0

Ok я нашел там ответ : https://stackoverflow.com/a/18159463/3562952

TableView не был безответственным, он обманчиво реагировал только после того, как 1-3 секунды удерживайте нажатой клавишу.

У меня был ответчик ответчика на родительском взгляде, который захватывал кран. Теперь я удаляю его, когда показываю popover и снова возвращаюсь к увольнению.

Я прибегая к помощи неправильным симптомов :)

0

Если вы используете popoverController, чтобы показать вид таблицы, вам не нужно вставлять его в навигации контроллер, вместо сделать другой ViewController с таблицей вид и просто башмак, что внутри контроллера поповера еГо использовал его несколько, как это ..

Сделать глобальную ссылку на UIPopoverController в делегат своего приложения, // в вашем Appdelegate.h файла объявляют @property (сильный, неатомический) UIPopoverController * popOverForTableView;

Теперь в контроллер, который вы хотите, чтобы показать вид поповер использовать это,

TableViewCOntroller* popoverContent = [[TableViewCOntroller alloc] init]; 

    NSString *[email protected]"tableVC" 
    popoverContent =[[UIStoryboard storyboardWithName:@"Main" 
               bundle:nil] 
        instantiateViewControllerWithIdentifier:identifier]; 
    popoverContent.preferredContentSize = CGSizeMake(330, 280); 


    AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate]; 

    appDelegate. popOverForTableView = [[UIPopoverController alloc]initWithContentViewController:popoverContent]; 
    appDelegate.popOverForTableView.delegate = self; 
    appDelegate.popOverForTableView.backgroundColor=[UIColor blackColor]; 
    [appDelegate.popOverForTableView presentPopoverFromRect:self.date.frame inView:self.view permittedArrowDirections:(UIPopoverArrowDirectionUp) animated:YES]; 

Вы можете уволить его, соответственно, ..., ... увидеть, если это помогает ..

+0

Спасибо, мне нужно navigationcontroller хотя, потому что на поражая клетку мне нужно нажать другую ViewController в том же пироге. Я отредактирую свой вопрос, чтобы сделать его более ясным –

+0

ну, а затем, нажав на ячейку, просто представим контроллер подробного представления, а не нажмите ..... попробуйте использовать метод currentmodalViewCOntroller – Geet

+0

О, хорошо, хорошая идея, которая была бы моим решением, если я не могу исправить это, но это имеет смысл UI-мудрый, что представление исходит справа. –

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