2014-09-15 30 views
5

Chỉ là một nhiệm vụ đơn giản, nhưng tôi đang gặp rắc rối. Đang cố gắng tạo ra một cách khác nhưng nó không thành công.ViewController.Type không có thành viên có tên

enter image description here

Làm thế nào để init NSTimer với biến đã khai báo trước đó? Cả var cũng không cho phép.

+0

có thể trùng lặp của [Làm thế nào để khởi tạo các thuộc tính phụ thuộc vào nhau] (http://stackoverflow.com/questions/25854300/how-to-initialize-properties- điều đó phụ thuộc vào nhau) –

Trả lời

10

Giá trị ban đầu của một thuộc tính (trong trường hợp của bạn: timer) không thể phụ thuộc vào thuộc tính khác của lớp học (trong trường hợp của bạn: interval).

Vì vậy, bạn phải di chuyển assionment timer = NSTimer(interval, ...) vào phương thức của lớp , ví dụ: vào viewDidLoad. Kết quả là, timer phải được xác định là tùy chọn hoặc ẩn hoàn toàn tùy chọn.

Cũng lưu ý rằng Selector(...) nhận một ký tự là chuỗi làm đối số chứ không phải chính phương thức đó.

Vì vậy, điều này sẽ làm việc:

class ViewController: UIViewController { 

    var interval : NSTimeInterval = 1.0 
    var timer : NSTimer! 

    func timerRedraw() { 

    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     timer = NSTimer(timeInterval: interval, target: self, selector: Selector("timerRedraw"), userInfo: nil, repeats: true) 

     // ... 
    } 

    // Other methods ... 
} 
0

Hãy thử:

var interval:NSTimeInterval = 1.0 
var timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw:", userInfo: nil, repeats: true) 

pro-tip và hy vọng một đánh giá cao FYI: chức năng Swift cũng nên bắt đầu với chữ thường (tức là "timerRedraw").

+0

Thật không may, nó không giúp ích gì. Cùng một vấn đề xuất hiện: khoảng thời gian không tìm thấy –

+0

vâng, tôi quên lưu ý rằng bạn cần phải đặt hai biến của bạn vào phương thức "' viewDidLoad' "của bạn. Đó là chính xác những gì người khác trả lời chính xác nói. Tôi đã cho anh ta một +1 cho điều đó. –

Các vấn đề liên quan