在对象上创建视图

时间:2015-03-18 02:27:32

标签: swift

我尝试在Swift中创建一个场景,其中点击了一个对象(对象是一个按钮),它在点击的建筑物上方创建了一个弹出窗口。我以为我把它弄下来,直到它给了我一个错误说,在打开一个可选的或类似的东西时意外的零值。这是代码。感谢您提供的任何修复。

import UIKit

class BuildingUI {

//props
enum buildingTypes {
    case residential
    case commercial
}

var xValue : CGFloat = 0
var width : CGFloat = 0

//methods
func createBuildingView(xValue : CGFloat, width : CGFloat, buildingType : buildingTypes) {
    self.xValue = (xValue+(width/2))
    playScreenIns.BuildingView1.frame = CGRect(x: self.xValue, y: playScreenIns.PlayView.frame.height/10, width: (playScreenIns.PlayView.frame.width/5)*3, height: playScreenIns.PlayView.frame.height/4)
    playScreenIns.BuildingView1.backgroundColor = UIColor.lightGrayColor()
    playScreenIns.BuildingView1.layer.borderWidth = 2
    playScreenIns.BuildingView1.layer.borderColor = UIColor.darkGrayColor().CGColor
    playScreenIns.BuildingView1.layer.cornerRadius = 25
    playScreenIns.scroller.addSubview(playScreenIns.BuildingView1)
}

}

var BuildingUIIns = BuildingUI()




import UIKit

class PlayScreen : UIViewController {

@IBOutlet var PlayView: UIView!
var BuildingView1 : UIView!

@IBAction func CityHallPress(sender: UIButton!) {

        BuildingUIIns.createBuildingView(sender.frame.origin.x, width: sender.frame.width, buildingType: .residential)


}



}

var playScreenIns = PlayScreen()

1 个答案:

答案 0 :(得分:0)

审核您的代码并发表评论。我相信你想要的是

BuildingUI应该继承UIView

class BuildingUI: UIView {}

然后在PlayScreen中,BuildingView1应为BuildingUI类型。

但是,我不太确定你要做什么......你在游乐场做这个实验测试吗?

在旁注中,您应该使用后缀为您的类命名,例如继承自哪种类

BuildingUI应为BuildingViewPlayScreen应为PlayScreenViewController

您应该像BuildingView1一样使用小写buildinvView1BuildingUI开始您的类属性。但我猜它的味道问题!