2014-11-25 65 views
1

所以香港專業教育學院建立了一個自定義單元格類我UITableView。 Xcode中堅持,這UITableViewCell有以下初始化(Xcode中實際上自動填寫該代碼對我來說):的UITableViewCell,不能援引「初始化」與類型的參數列表「(編碼器:NSCoder)」

class customCell: UITableViewCell { 

    required init(coder aDecoder:NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

伊夫修改這個初始化的內容包含以下內容:

 // fatalError("init(coder:) has not been implemented") 
     super.init(coder: aDecoder) 

如果我刪除。required然後Xcode中踢了一個錯誤,並希望通過將關鍵詞早在糾正我的關鍵字

所以在我UITableView類我嘗試註冊該小區像這樣:

override func viewDidLoad(){ 
    super.viewDidLoad() 
    let coder: NSCoder = NSCoder() 
    let customCell: AnyClass = customCell(coder: coder) 
    table?.registerClass(customCell, forCellReuseIdentifier:"cell") 

倒數第二行(就是我初始化customCell與NSCoder,如Xcode中要我)產生錯誤:

Cannot invoke 'init' with an argument list of type '(coder: NSCoder)' 

如果我能我更願意建立自己的初始化沒有NSCoder。

如果我嘗試使用其他任何初始化然後Xcode中踢了一個錯誤的線沿線的:

Extra argument 'reuseIndenifier' in call 

Missing argument in call 

它將繼續抱怨,直到我使用的初始化與NSCoder 。我被迫使用這個初始化器。

請糾正我,如果我在這裏的方式,但對我來說,好像我陷入了catch 22的情況 - Xcode抱怨,如果我建立一個沒有編碼器的初始化器,然後當我嘗試使用初始化與它抱怨我使用的是編碼器。

儘管存在這種明顯的矛盾,但我相當確信這一切都是我在某個地方成爲笨拙的結果。

有沒有人有足夠的指點我在正確的方向?

+0

你看了UITableView的編程指南? afaik這不是你如何使用UITableView和UITableViewCell的,但我可能是錯的。 initWithCoder初始化程序在使用故事板時被調用,並且不應該發生,因爲您通常會在UITableViewDataSource委託方法中初始化UITableViewCell對象。所以也許有更多的背景會對此有所幫助。 – believesInSanta 2014-11-25 11:53:38

+0

我試圖創建一個自定義'UITableViewCell'編程 - 請這樣的問題:http://stackoverflow.com/questions/27103278/creating-a-uitableviewcell-programmatically-in-swift – Jimmery 2014-11-25 11:55:00

+0

你可以嘗試使用'的init(風格樣式:UITableViewCellStyle, reuseIdentifier reuseIdentifier:String?),就像我說的,initWithCoder被接口生成器 – believesInSanta 2014-11-25 12:01:29

回答

相關問題