在UITableView Swift中点击单元格时,使用UIView创建弹出窗口

时间:2016-03-02 09:06:02

标签: ios swift uiview

我有一个tableview,如果在tableview上点击了一个单元格,我想创建一个UIView来弹出tableview并在tableview单元格中显示内容。我想在tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)中添加代码,以便在选择行时打开UIView。我只需要知道如何用UIView创建一个弹出窗口。我找不到任何帮助我解决这个问题的来源。关于如何做到这一点的一些解释将是非常棒的。提前谢谢!

3 个答案:

答案 0 :(得分:2)

首先添加let vw = UIView(),然后尝试此

    vw.frame = CGRectMake(150, 150, 0, 0)
    vw.backgroundColor = UIColor.redColor()
    self.view.addSubview(vw)

    UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {

        self.vw.frame = CGRectMake(75, 75, 300, 300)

    }, completion: nil)

首先创建一个UIView,并设置其X和Y点(150),然后设置宽度和高度(300)。我只是添加一个背景颜色来表明它确实存在。然后animatedWithDuration部分将重置框架,使其看起来像弹出。

如果您希望后面的视图变暗,请添加此项。

view.backgroundColor = UIColor(white: 1, alpha: 0.5)

关于触摸背景视图以关闭弹出视图。你需要一个轻敲手势识别器,并为它起作用

    var tap = UITapGestureRecognizer()
    tap.delegate = self
    tap.addTarget(self, action: "tapped")
    self.view.addGestureRecognizer(tap)

然后是它的功能

    func tapped(){
       vw.removeFromSuperview()
    }

答案 1 :(得分:2)

如果您使用的是IOS 8或更高版本,您可以在新的UIViewController中创建UIView,其设置属性ModalPresentationStyle的值为UIModalPresentationStyle。在你做过类似的事情.SelectRowAtIndexPath:

var popoverContent = self.storyboard?.instantiateViewControllerWithIdentifier("NewCategory") as UIViewController
var nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.Popover
var popover = nav.popoverPresentationController
popoverContent.preferredContentSize = CGSizeMake(500,600)
popover.delegate = self
popover.sourceView = self.view
popover.sourceRect = CGRectMake(100,100,0,0)

self.presentViewController(nav, animated: true, completion: nil)

答案 2 :(得分:2)

<强>步骤1

创建一个UIView,将框架设置为View.bounds,同时为隐藏功能添加Tap gesture

<强>步骤-2

目前查看点击,使用

UIView.animateWithDuration(1.0, animations: {
    yourView.alpha = 1.0
})

<强>步骤-3

隐藏

 UIView.animateWithDuration(1.0, animations: {
    yourView.alpha = 0.0
})

最后,如果您要隐藏使用hiddenremovefromsuperview