質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

5436閲覧

【Swift3】カスタムセルでエラー:unexpectedly found nil while unwrapping an Optional value

kokaa

総合スコア12

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/11 13:47

カスタムセルを利用したテーブルビューを実装しているのですが、
ViewControllerのcellのデータをセットしているところで下記エラーとなってしまいます。

fatal error: unexpectedly found nil while unwrapping an Optional value

下記、コードとなります。

ViewController.swift

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { var titleLb = "テストタイトル" let date = "2015.02.02" let siteName = "テストサイト" @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() } public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ return 5 } public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ let cell = tableView.dequeueReusableCell(withIdentifier: "FirstCell", for:indexPath) as! FirstCell print(cell) cell.cellImage.image = UIImage(named: "images.jpeg") ---こちらがエラーとなります。 cell.cellTitle.text = titleLb ---こちらがエラーとなります。 cell.cellDate.text = date ---こちらがエラーとなります。 cell.cellSiteName.text = siteName ---こちらがエラーとなります。 return cell } }

セルに表示するデータは現在テスト的にいれているものとなります。

FirstCell.swift

import UIKit class FirstCell: UITableViewCell { @IBOutlet weak var cellImage: UIImageView! @IBOutlet weak var cellTitle: UILabel! @IBOutlet weak var cellDate: UILabel! @IBOutlet weak var cellSiteName: UILabel! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } }

Cellのidentifierはtypoがないか確認し、しっかりと設定しております。

同じエラーで検索してみて、解決法としてのってあるものを何個か試してみたのですが、解決せず。
どなたかご教示頂けますと幸いです。

開発環境は
Xcode : Version 8.2.1
Swift3
になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/15 07:26

カスタムセルはxibでレイアウトされているのではなく、storyboardのtableView上に配置しているものでしょうか?
fuzzball

2018/01/29 01:46

print(cell)の出力を教えて下さい。
guest

回答2

0

tableView と UITableViewDataSource,UITableViewDelegate が紐づけられていないように見えます。

viewDidLoad を以下のように変更してみてください。

swift

1 override func viewDidLoad() { 2 super.viewDidLoad() 3 self.tableView.delegate = self 4 self.tableView.dataSource = self 5 }

投稿2018/01/28 17:15

syunyooo

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ViewController.swiftの方は

swift

1class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { 2 3 4 var titleLb = "テストタイトル" 5 let date = "2015.02.02" 6 let siteName = "テストサイト" 7 8 @IBOutlet weak var tableView: UITableView! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 } 14 15 public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 16 return 5 17 } 18 19 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 20 21 guard let cell = tableView.dequeueReusableCell(withIdentifier: "FirstCell", for:indexPath) as? FirstCell else { 22 fatalError() 23 } 24 //ここから 25 cell.fill( 26 image : UIImage(named: "images.jpeg"), 27 titleLB : titleLB, 28 date. : date, 29 siteName: siteName 30 ) 31 //ここまで修正 32 return cell 33 } 34}

こんな感じで修正して、

FirstCellは

swift

1import UIKit 2 3class FirstCell: UITableViewCell { 4 5 @IBOutlet weak var cellImage: UIImageView! 6 @IBOutlet weak var cellTitle: UILabel! 7 @IBOutlet weak var cellDate: UILabel! 8 @IBOutlet weak var cellSiteName: UILabel! 9 10 override func awakeFromNib() { 11 super.awakeFromNib() 12 13 } 14 15 override func setSelected(_ selected: Bool, animated: Bool) { 16 super.setSelected(selected, animated: animated) 17 18 } 19 //ここを追加 20 func fill(image: UIImageView, titleLb: String, date: String, siteName: String){ 21 cellImage.image = image 22 cellTitle.text = titleLb 23 cellDate.text = date 24 cellSiteName.text = siteName 25 } 26 27}

こんな感じで関数を追加してやってみてはどうでしょうか。

投稿2017/02/11 14:19

xAxis

総合スコア1349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問