2015-03-18 4 views
0

Я пытаюсь создать сцену в 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() 
+0

Ошибка, которую она дает, находится на линии playScreenIns.BuildingView1.frame = –

+0

какой класс является «createBuildingView»? Я не вижу этого, и я также не вижу, где вы инициализируете (или настраиваете) свойство «PlayView» –

+0

, поэтому у вашего BuildingUIIns есть свойство 'playScreenIns', что такое' playScreenIns'? Я просто заметил, что вы создаете экземпляр playScreenIns. Ваш BuildingUI не знает, что такое playScreenIns. – slik

ответ

0

После просмотра кода и комментирования. Я считаю, что вы хотите

BuildingUI должен наследовать UIView

class BuildingUI: UIView {} 

затем в вашем PlayScreenBuildingView1 должен быть типа BuildingUI.

Но я не настолько уверен в том, что вы пытаетесь сделать ... вы делаете это как экспериментальный тест на детской площадке?

На стороне записки, вы должны назвать свои классы с постфикса, какой класс ваш наследующий например

BuildingUI должен быть BuildingView и PlayScreen должны быть PlayScreenViewController

вы должны начать свой класс свойства с нижним регистром BuildingView1 до buildinvView1 как вы делаете в BuildingUI. Но это вопрос вкуса, я думаю!

Смежные вопросы