2016-04-25 17 views
0

這可能是一些非常愚蠢的,因爲我很新的雨燕和iOS開發,但我有一個UITableView,並子類UITableViewCell(稱之爲myCell )。斯威夫特的UITableViewCell子類,IBOutlet中的UILabel錯誤,如果正常使用VAR沒有錯誤

myCell具有在故事板一個UILabel,我它連接到所述代碼,@IBOutlet weak var myLabel: UILabel!使得它旁邊的小點是灰色的。然後,在初始化,override init(style: UITableViewCellStyle, reuseIdentifier: String?),我在訪問myLabel得到下面的錯誤 - 無論我是否實例化它(myLabel = UILabel())第一與否:

fatal error: unexpectedly found nil while unwrapping an Optional value

然而,如果我聲明myLabel爲一個標準的varvar myLabel: UILabel!,並在初始化器中像上面那樣實例化它,事情就起作用了。

如果它的事項,我有一個UIViewControllerUITableView(而不是一個UITableViewController),所以視圖控制器實現UITableViewDataSourceUITableViewDelegate,並添加表視圖作爲子圖。

我的問題是,爲什麼myLabelnil時,通過接口生成器? (我檢查的連接,我已經刪除了連接,並創建了一個新的標籤 - 無論是按ctrl +從故事板UILabel的代碼拖動,並通過在代碼圓形拖動只需重新連接故事板UILabel

編輯

通過打電話給我的表格單元格: let cell = tableView.dequeueReusableCellWithIdentifier("MyTableViewCell", forIndexPath: indexPath) as! MyTableViewCell提供了以下錯誤:

'unable to dequeue a cell with identifier MyTableViewCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

...我不明白,因爲「MyTableViewCell」設置爲reuseIdentifier在故事板的電池原型。

+0

是的,我已經覆蓋了這兩個。 – andrewm921

+0

您是否從故事板場景創建視圖控制器實例? – Paulw11

+1

您的零售店將在您的初始化程序中爲零。在設置其值之前,您必須等待視圖加載。 –

回答

0

我想通了,有兩個問題:

1)我沒有出口(@IBOutlet)到TableView中的視圖控制器子類,

2)我用let創建的視圖控制器的didLoad一個UITableView對象,DataSource和委託設置爲self後,爲將其添加爲子視圖到ViewController的看法,顯然擰一切。

如果任何人想這樣做,我發現這個鏈接有用: https://medium.com/@ronm333/a-simple-table-view-example-in-swift-cbf9a405f975#.yymib1tm5

感謝您的幫助,rMickeyD

1

的的UILabel在故事板被連接到與特定的reuseIdentifier一個特定小區。您是否嘗試訪問與其所在位置不同的單元格中的標籤?這可能會導致您遇到的錯誤。

+0

是的,它是故事板中原型單元格中的UILabel,並且正確的reuseIdentifier(可能)被傳遞 - 實際上它不是 - 請參閱上面的編輯。 – andrewm921

+0

你可以發佈你的cellForRowAtIndexPath方法嗎? – rMickeyD

+0

您的原型單元是否註冊爲UITableViewCell或特定的MyTableViewCell?它應該是後者。一旦完成,您將需要創建一個MyTableViewCell的新文件。這是你將連接你的網點的地方。 – rMickeyD