2017-06-03 30 views
0

我有一個自定義的表格視圖單元格,我實際創建。 沒有使用IBOutlets。我應該爲UITableViewCell使用什麼初始值設定項/方法,以編程方式創建所有內容?

我想在界面生成器和代碼中使用它。

我想在界面生成器中爲靜態表格視圖控制器使用它。

在動態表格視圖控制器代碼

我不會使用.xib文件。

閱讀了幾天後,這是我迄今爲止學到的。

// This method will be called when I create the cell programmatically 

override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 

    commonInit() 
} 


// This will be called when a file is loaded from storyboard (or .xib) 
// will not use xib only storyboard file (static table view cell) 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    commonInit() 
} 


// this will be called after init(coder) 
// when all IBOutlets are ready for use 
// I'm currently not using this method 
// because I don't have any IBOutlets 
// Not sure if I should use it 

override func awakeFromNib() { 
    super.awakeFromNib() 
} 

一切似乎工作正常。

在代碼中使用單元格時,我手動註冊單元格並重新使用它。

這段代碼好嗎? 我似乎無法找到任何明確的解釋,如何一切工作。我閱讀了在網上可以找到的所有內容,但是我一直在尋找不同的觀點和想法。 我想清楚說明何時應使用每種初始化方法。

例如,一些聯機代碼使用awakeFromNib和init(編碼器)方法。他們似乎在這兩種方法中都調用了commonInit()。 我真的沒有看到任何理由,因爲那些被一個接一個地調用。

+0

IMO,你做得對。 –

+0

我同意Adil。你做得很好。你的想法或你的代碼沒有錯。 – Mozahler

+0

謝謝,這是令人放心的。我還沒有任何問題。 – 3366784

回答

0

完全在代碼中創建和使用UITableViewCell並不難。 我將舉一個你可以創建的最簡單單元的例子。您可以閱讀文檔以查看其他更復雜的單元格配置(包括圖像,字幕等)

(位於左大括號後),您應該爲不同的新單元格定義一個標識符標識符,而不是您在故事板中使用的標識符。

let cellIdentifier = "Cell" 
在viewDidLoad中

您需要註冊新的小區:使用您定義的標識

tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) 

然後,當你需要一個單元格,你問它前面:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) 
    cell?.textLabel?.text = dataSource[indexPath.row].title 
    return cell! 
} 

最後:

從nib/xib中使用單元格而不是純粹從代碼如下:

let cellNib = UINib(nibName: "DropDownCell", bundle: Bundle(for: DropDownCell.self)) 

從磁盤加載電池,而不是簡單的初始化,當你註冊的單元格,您註冊剛剛創建的筆尖:

 tableView.register(cellNib, forCellReuseIdentifier: cellReuseIdentifier) 

蘋果斯威夫特文檔總是最好的地方開始,看看事情是如何使用的。Swift 3,"Swift and Cocoa"

Matt Neuberg(他在這個網站上非常活躍)寫了一些我已經買了的書,他的「Programming iOS」系列有一個關於用nibs中的單元配置佈局的章節。

斯威夫特還有一個在線課程,HackingWithSwift,它是免費的,並且有關於UITableViewCells的一章。它向您展示瞭如何着色單元格中的文本,使其彈出一點。 UITableViewCells

很多人都贊同這裏找到的教程:Ray Wenderlich關於這些的好處是您可以在代碼的快照前後下載,以便您看到所有的工作。

這裏有一個自我定型細胞使用自動佈局Wenderlich - Autolayout Cells

而且,您可以來這裏當你真的卡住[你GOOGLE了,但還是無法弄清楚。嘗試用你需要的例子來問一些具體的問題,並展示你所嘗試過的。我想你會很驚訝有人會很快幫助你,因爲圖片中缺少的是什麼。

我想我已經在這裏過了一點點,因爲很清楚你知道你在做什麼...保持它,並!

+0

是的,這正是我在代碼 – 3366784

+0

中初始化我的單元格所以,這是否意味着你很好去 - 或者你還有問題嗎? – Mozahler

+0

也許你可以指點我正確的方向,以瞭解更多關於代碼和nib文件初始化的信息。這是如何工作的。對不起,如果我的問題不清楚。 – 3366784

相關問題