ios - UIPopover 与 UINavigationController 和 UITableView : tableView delegates not called

标签 ios tableview popover navigationcontroller

我正在尝试显示一个简单的 iPad 弹出框,其中包含一个带有 tableView 的 navigationController。

弹出框 -> 导航 Controller -> View Controller -> 表格 View 。

我确实需要导航 Controller ,因为在触摸单元格时我想推送另一个 View Controller (在同一个弹出框内)。

没有导航 Controller ,一切都很好。
但是,一旦我将 viewController 放入 navigationController 中,tableView 就会停止响应(didSelectRow 不会被调用)。我想我的代表出了点问题,但我就是想不通。

. navigationController 响应良好(我可以点击顶部栏中的按钮)

.单元格中的按钮响应良好。

.如果我按下并按住一个单元格,它会突出显示,但没有被选中。

更新:我刚刚发现,如果我按住单元格至少一秒钟,当我释放它时会调用委托(delegate)。比这还少,它永远不会被调用......???

下面是代码使用:

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];

最佳答案

如果您使用 popoverController 来显示表格 View ,则无需将其嵌入导航 Controller 中,而是使用表格 View 制作不同的 Viewcontroller,然后将其放入 popover Controller 中。我使用它有点像这样。 .

在您的应用程序委托(delegate)中为 UIPopoverController 进行全局引用,
//在你的 Appdelegate.h 文件中声明这个
@property(strong, nonatomic) UIPopoverController *popOverForTableView;

现在在要显示 PopOver View 的 Controller 中使用这个,

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

  NSString *identifier=@"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];

您可以相应地忽略它......,......看看这是否有帮助......

关于ios - UIPopover 与 UINavigationController 和 UITableView : tableView delegates not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23858182/

相关文章:

swift - 在 ios swift 中使用数组选择取消选择 uitableview 部分中的 radio

ios - UitableView行选择和UIButton操作

javascript - 弹出窗口中的溢出滚动条不起作用( Bootstrap )

javascript - 应用程序每个页面上的 Angularjs Popover

ios - 尝试将 UIImage 数组加载到 UITableView 时,Swift 3 错误 : "Argument labels ' (named:_:, _ :, )' do not match any available overloads"

iOS 在应用程序启动时动画 subview ?

ios - 如何在 iOS 10 中获取通话记录

ios - Xcode 6.3 : Could not load NIB in bundle

ios - 带有表格 View 的 UI 按钮

jquery - 弹出窗口内容内的 Bootstrap 切换按钮不起作用