警报和tableViewCell

时间:2016-04-19 16:17:36

标签: ios swift uitableview alert

如何点击UITableView的单元格,然后它会显示一个警告,我可以在其中选择" Ok"或"取消"。

如果" Ok"点击,应用程序显示一个安装程序控制器(我已经有)。

如果"取消"被点击,警报消失,没有任何反应。

2 个答案:

答案 0 :(得分:1)

概述:

<强> 1。设置表格视图委托

如果您使用UITableViewControllerUITableViewDelegate已设置为表视图控制器类,则自行设置(tableView.delegate = self)。

<强> 2。点击单元格时将调用的函数

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

第3。使用演示控制器显示警报视图

代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let alertController = UIAlertController(title: "Something", message: "bla bla", preferredStyle: .Alert)

    let okAction = UIAlertAction(title: "Ok", style: .Default) { action in

        //Do something when cancel is tapped

        let setupController = UIViewController() //Replace with your own set up view controller

        self.presentViewController(setupController, animated: true) {
            //Do something when alert view is presented
        }
    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in

        //Do something when cancel is tapped
    }

    alertController.addAction(okAction)
    alertController.addAction(cancelAction)

    //Show alert view
    presentViewController(alertController, animated: true) {
        //Do something when alert view is presented
    }
}

答案 1 :(得分:0)

您需要覆盖方法tableView:didSelectRowAtIndexPath:,如下所示

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        let ac = UIAlertController(title: "Title", message: "Your message here", preferredStyle: .Alert)
        let okAction = UIAlertAction(title: "Ok", style: .Default) { (_) in
            presentViewController(yourSetupController, animated: true, completion: nil)

        }
        ac.addAction(okAction)
        let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
        ac.addAction(cancelAction)
        presentViewController(ac, animated: true, completion: nil)
    }