我尝试在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()
答案 0 :(得分:0)
审核您的代码并发表评论。我相信你想要的是
BuildingUI
应该继承UIView
class BuildingUI: UIView {}
然后在PlayScreen
中,BuildingView1
应为BuildingUI
类型。
但是,我不太确定你要做什么......你在游乐场做这个实验测试吗?
在旁注中,您应该使用后缀为您的类命名,例如继承自哪种类
BuildingUI
应为BuildingView
而PlayScreen
应为PlayScreenViewController
您应该像BuildingView1
一样使用小写buildinvView1
到BuildingUI
开始您的类属性。但我猜它的味道问题!