【问题标题】:Show a popover for a UIButton in a static UITableViewCell在静态 UITableViewCell 中显示 UIButton 的弹出框
【发布时间】:2014-09-24 15:29:20
【问题描述】:

当我点击 UIButton 时出现弹出框。此按钮位于静态 UITableViewCell 中。但是,当我点击按钮时,弹出框不在我认为应该在 UIButton 下的位置。

因为它是一个静态单元格,所以我没有使用 didSelectRowAtIndexPath,也不需要使用 cellForRowAtIndexPath。我基本上使用 UITableView 作为在我的视图控制器中嵌入滚动视图的廉价替代方案。它本质上是用于数据输入的。我有 4 个部分,每个部分有 1 行。我相信我需要弄清楚如何从每个部分的行中获取 NSIndexPath 以传递给 .sourceView 类似于 Objective-C 中的内容

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[self.profileItemsDetailPopover presentPopoverFromRect:cell.bounds inView:cell.contentView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];


@IBAction func dateOfBirthAction(sender: AnyObject){

    var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("DateOfBirthViewController") as UIViewController
    popoverViewController.modalPresentationStyle = .Popover
    popoverViewController.preferredContentSize   = CGSizeMake(300, 300)

    let popoverPresentationViewController = popoverViewController.popoverPresentationController

    popoverPresentationViewController?.permittedArrowDirections = .Any
    popoverPresentationViewController?.delegate = self
    popoverPresentationViewController?.sourceView = tableView
    popoverPresentationViewController?.sourceRect = playerInformationBirthDateButton.frame

    presentViewController(popoverViewController, animated: true, completion: nil)
}

解决方案:

@IBAction func dateOfBirthAction(sender: UIButton){

    var cell = sender.superview!.superview! as UITableViewCell

    var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("DateOfBirthViewController") as UIViewController
    popoverViewController.modalPresentationStyle = .Popover
    popoverViewController.preferredContentSize   = CGSizeMake(300, 300)

    let popoverPresentationViewController = popoverViewController.popoverPresentationController

    popoverPresentationViewController?.permittedArrowDirections = .Any
    popoverPresentationViewController?.delegate = self
    popoverPresentationViewController?.sourceView = cell.contentView
    popoverPresentationViewController?.sourceRect = playerInformationBirthDateButton.frame

    presentViewController(popoverViewController, animated: true, completion: nil)
}

【问题讨论】:

  • 谢谢..它也适用于我..我如何在确切的单元格上给出指针?

标签: uitableview swift uibutton popover


【解决方案1】:

您还可以在单​​击按钮时找到“单元格”。

var cell = sender.superview!.superview! as UITableViewCell
// or the table
var table: UITableView = cell.superview as UITableView
// or the Indexpath
let indexPath = table.indexPathForCell(cell)

【讨论】:

  • 我不得不稍微调整一下您的解决方案,但它确实有效。将编辑并添加解决方案。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多