在常规 Xcode 项目中重用 Playground 代码

Posted

技术标签:

【中文标题】在常规 Xcode 项目中重用 Playground 代码【英文标题】:Reuse playground code in a regular Xcode project 【发布时间】:2020-09-16 07:51:34 【问题描述】:

我有一些代码可以在我的操场上创建 UICollectionView。该代码可以正常工作并且可以预览。现在我正在尝试将它重用到 Xcode 项目中,我没有收到任何错误,但模拟器上的构建只是纯白色.. 什么都看不到

有人能解释一下这个原因吗? :)

import UIKit
//import PlaygroundSupport

class MyViewController : UIViewController 
    var myCollectionView:UICollectionView?
    
    override func viewDidLoad() 
        super.viewDidLoad()
        
        let view = UIView()
        view.backgroundColor = .white
        
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
        layout.itemSize = CGSize(width: 60, height: 60)
        
        myCollectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)

        myCollectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "MyCell")
        myCollectionView?.backgroundColor = UIColor.white
        
        myCollectionView?.dataSource = self
        myCollectionView?.delegate = self
 
        view.addSubview(myCollectionView ?? UICollectionView())
        
        self.view = view
    


extension MyViewController: UICollectionViewDataSource 
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
        return 9 // How many cells to display
    
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let myCell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath)
        myCell.backgroundColor = UIColor.blue
        return myCell
    


extension MyViewController: UICollectionViewDelegate 
 
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
       print("User tapped on item \(indexPath.row)")
    


// Present the view controller in the Live View window
//PlaygroundPage.current.liveView = MyViewController()

【问题讨论】:

您希望PlaygroundPage.current.liveView = MyViewController()ios 应用程序中工作吗?如果您使用故事板,您应该在故事板中将MyViewController 设置为 VC 的类。 不,我没想到 de 'PlaygroundPage.current.liveView = MyViewController()' 可以在 iOS 应用程序中工作。这就是为什么我把 // 禁用它...我还删除了最后一行代码但仍然没有效果。那么,如何在我的故事板中将 MyViewController 设置为 VC 的类? 【参考方案1】:

你有没有去故事板,在文档大纲中选择视图控制器,并在 Identity Inspector 中将类名从 UIViewController 更改为 MyViewController?如果您不进行更改,Xcode 会假定您要使用默认的 UIViewController,它是空白的。

【讨论】:

以上是关于在常规 Xcode 项目中重用 Playground 代码的主要内容,如果未能解决你的问题,请参考以下文章

xcode 快捷键

xcode 快捷键

iOS xcode重用tableview [关闭]

Xcode8更新内容

Xcode:如何找到没有重用标识符的单元格

如何在 iOS/xcode 中重用颜色和样式?