加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – Swift playground:获取ViewController以调用presentView

发布时间:2020-12-14 17:44:02 所属栏目:百科 来源:网络整理
导读:我想在Playground玩UIAlertController.是否有可能从XCPlaygroundPage获取ViewController – 能够调用presentViewController? 解决方法 是的,你当然可以获得一个视图控制器,但因为没有“附加”视图控制器,你最终会看到如下警告: 不鼓励在分离的视图控制器上
我想在Playground玩UIAlertController.是否有可能从XCPlaygroundPage获取ViewController – 能够调用presentViewController?

解决方法

是的,你当然可以获得一个视图控制器,但因为没有“附加”视图控制器,你最终会看到如下警告:

不鼓励在分离的视图控制器上呈现视图控制器

在我的情况下,警报控制器在屏幕上超短暂闪烁,然后消失.也许你可以稍微提高一点吗?

无论如何,这是我在操场上创建视图控制器的方式:

import UIKit
import XCPlayground

class RootViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.frame = CGRect(x: 0,y: 0,width: 350,height: 420)
        self.view.backgroundColor = UIColor.redColor()
    }
}

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    var tableView: UITableView!
    let items = ["Hello 1","Hello 2","Hello 3"]
    var alertController : UIAlertController? {
        didSet {
            if alertController == nil {
                print("alertController set to nil")
            } else {
                print("alertController set to (alertController)")
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.frame = CGRect(x: 0,width: 320,height: 480)
        self.tableView = UITableView(frame:self.view.frame)
        self.tableView!.dataSource = self
        self.tableView!.registerClass(UITableViewCell.self,forCellReuseIdentifier: "cell")
        self.view.addSubview(self.tableView)

    }
    func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int{
        return self.items.count;
    }

    func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        let cell = tableView.dequeueReusableCellWithIdentifier("cell",forIndexPath: indexPath) as UITableViewCell
        cell.textLabel?.text = "(self.items[indexPath.row])"
        return cell
    }

    override func viewDidAppear(animated: Bool) {
        alertController = UIAlertController.init(title: "My Title",message: "Testing in Playground",preferredStyle: .Alert)

        let okAction = UIAlertAction(title: "Ok",style: .Default) { (_) -> Void in
            // Some action here
            print("hit okay button")
        }

        alertController!.addAction(okAction)

        ctrl.presentViewController(alertController!,animated: false,completion: {
            print("done presenting")
        })
    }
}

var ctrl = ViewController()
var rootVC = RootViewController()
rootVC.addChildViewController(ctrl)
rootVC.view.addSubview(ctrl.view)
XCPlaygroundPage.currentPage.liveView = rootVC.view

而我在这里做的是创建一个“根视图控制器”,添加一个带有表的子视图控制器(试图让一些视图控制器“附加”到其他东西)然后我试图呈现一个警报控制器在那.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读