Я пытаюсь создать сцену в Swift, в которой щелкнут объект (объект - кнопка), и он создает всплывающее окно над щелканным зданием. Я думал, что у меня это было, пока он не дал мне ошибку, говорящую, неожиданное значение nil при разворачивании необязательного или что-то противное. Вот код. Спасибо за любые исправления, которые у вас могут быть.Создание представления над объектом
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()
Ошибка, которую она дает, находится на линии playScreenIns.BuildingView1.frame = –
какой класс является «createBuildingView»? Я не вижу этого, и я также не вижу, где вы инициализируете (или настраиваете) свойство «PlayView» –
, поэтому у вашего BuildingUIIns есть свойство 'playScreenIns', что такое' playScreenIns'? Я просто заметил, что вы создаете экземпляр playScreenIns. Ваш BuildingUI не знает, что такое playScreenIns. – slik