2014-07-13 53 views
4

這是我RectangleView迅速的UIView沒有一個成員叫中心

import UIKit 

class RectangleView: UIView 
{ 
    init(frame: CGRect) 
    { 
     // Initialization code 
     super.init(frame: frame) 
    } 

    /* 
    override func drawRect(rect: CGRect) 
    { 
     // Drawing code 
    } 
    */ 
} 

我添加此RectangleViewCustomViewController

import UIKit 

class CustomViewController: UIViewController 
{ 
    var ballX:Int = 0 
    var ballY:Int = 0 
    let BALLWIDTH:Int = 50 
    let BALLHEIGHT:Int = 50 
    var navigationHeight:Double = 0.0 
    var pos:CGPoint? 
    var rectangleView:RectangleView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     self.ballX = Int(arc4random_uniform(320)); 
     self.ballY = Int(arc4random_uniform(480)); 
     self.navigationHeight = Double(self.navigationController.navigationBar.frame.size.height) 
     var rect = CGRect(x: 0, y: 0, width: self.BALLWIDTH, height: self.BALLHEIGHT) 
     self.pos = CGPoint(x: self.ballX, y: self.ballY); 

     println("x: \(self.ballX), y: \(self.ballY)") 

     self.rectangleView = RectangleView(frame: rect) 
     self.rectangleView!.backgroundColor = UIColor.redColor() 

     self.view.addSubview(self.rectangleView!) 

     NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("moveBall"), userInfo: nil, repeats: true) 
    } 

    func moveBall() 
    { 
     self.rectangleView!.center = CGPointMake(self.rectangleView!.center + self.pos!.x, self.rectangleView!.center + self.pos!.y) 
    } 
... 

而且我得到一個錯誤信息

'RectangleView?' does not have a member named 'center' 

我應該在我的RectangleView上定義這個center ?我的RectangleView繼承自UIView,所以我感到非常困惑。謝謝你的幫助。


編輯

我使用此代碼

func moveBall() 
{ 
    if let rv = self.rectangleView { 
     rv.center = CGPointMake(rv.center + self.pos!.x, rv.center + self.pos!.y) 
    } 

我得到了新的錯誤消息

'CGPoint' is not convertible to 'UInt8' 

我覺得rv.center類型爲UInt8,但self.post!.xnsnumber,所以我怎麼可以轉換爲CGPointMake接受類型?我已經轉換UInt8(self.pos!.x)並將計算結果再次轉換爲CGPointMake接受類型?

有沒有其他最好的方法?謝謝你的幫助。

+0

我很好奇。如果你添加一秒會發生什麼!當你嘗試訪問中心時。 'self.rectangleView !!。center'? – connor

+0

同樣,這給了我相同的錯誤信息。 – lighter

回答

7

!返回的值 - 包裝可選項目前是不可變的(請參閱Lattner's explanation)。

嘗試:

if let rv = self.rectangleView { 
    rv.center = ... 
} 

我想,這也算是斯威夫特一個已知的bug。

+0

嗨,我有一個新問題,我編輯我的問題,謝謝你的幫助 – lighter

+0

你正在添加一個int。您需要'rv.center.x + self.pos!.x'而不是'rv.center + self.pos!.x'。 y座標也一樣。 – Bill

+0

哦,我的上帝,我忘了它!謝謝你的幫助。 – lighter