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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2927閲覧

=至急=swiftでのxibファイルの呼び出しでcellがnilになる(落ちる)

maplesugar_17

総合スコア32

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/08/11 17:41

編集2016/08/12 15:31

Cell.xibというxibファイルにCustomCellをつくりました。このCellはcell_objectというidで紐付いています。customTableViewCellというCocoa Touch Classのファイル(下記)でxibファイルを呼び出しています。

swift

1class CustomTableViewCell: UITableViewCell { 2 3 @IBOutlet weak var weather_icon_image: UIImageView! 4 @IBOutlet weak var capitallabel: UILabel! 5 var nibName: String = "Cell" 6 7 override func awakeFromNib() { 8 super.awakeFromNib() 9 let view1:UIView? = UINib(nibName: "Cell",bundle: nil).instantiateWithOwner(self, options: nil)[0] as? UIView 10 self.addSubview(view1!) 11 } 12 13 override func setSelected(selected: Bool, animated: Bool) { 14 super.setSelected(selected, animated: animated) 15 16 } 17 18} 19

これと別のファイルでcell = tableView.dequeueReusableCellWithIdentifier("cell_object") as? CustomTableViewCellをして、Cellがnilの時のif文にCustomTableViewCell.awakeFromNib()と書きました。runすると、セルがnilだといって落ちてしまいます。どこを直せばいいでしょうか?ご教示おねがいします。

(追記)

swift

1func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 2 3let cell_object = tableView.dequeueReusableCellWithIdentifier("cell_object", forIndexPath: indexPath) as! CellForWeather 4 5if (indexPath.row % 2 == 0) { 6cell_object.backgroundColor = UIColor(hue:0.0,saturation:0.0,brightness:0.67,alpha:1.0) 7} 8// 奇数セル 9else { 10cell_object.backgroundColor = UIColor(hue:0.0,saturation:0.0,brightness:0.73,alpha:1.0) 11} 12 13// セルの向きを横向きに 14cell_object.contentView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI) / 2); 15 16CellForWeather().setdata("Tokyo",iconimg: UIImage(named:"01d.png")!) 17return cell_object 18}

CustomCell

1class CellForWeather: UITableViewCell { 2 3 @IBOutlet weak var weatherIconImage: UIImageView! 4 @IBOutlet weak var capitalLabel : UILabel! 5 6 override func awakeFromNib() { 7 super.awakeFromNib() 8 9 } 10 11 func setdata(capitalstr:String,iconimg:UIImage){ 12 weatherIconImage.image = iconimg 13 capitalLabel.text = capitalstr 14 } 15} 16

このコードの2行目でCould not cast value of type 'UITableViewCell' (0x1a0fe4718) to 'weatherforecast_swift.CellForWeather' (0x100057828).と出て落ちてしまいます。

cell.xibでのIdentifiercell_objectで、CustomClassCellForWeatherと確認しました。

追記2:if cell==nilの時の挙動を書かないといけないのだと思いますが、どのように書けばいいでしょうか?

ご教示お願いします

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

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

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

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

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

guest

回答1

0

ベストアンサー

xibから読み込んでセルを作成するサンプルを作成してみました、ダウンロードして試してみてください。
比較用にStoryboardTableViewに配置したセルの画面もありますので、生成のしかたなど比べてみてください。

分からない部分等ありましたら、コメントで聞いてください。

teratail_44048 Sample

投稿2016/08/11 22:44

編集2016/08/11 22:46
_Kentarou

総合スコア8490

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

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

maplesugar_17

2016/08/12 00:06

ありがとうございます、とてもわかりやすくて感動しました!自分のプログラムに組み込んだところ、Could not cast value of type 'UITableViewCell' (0x1a0fe4718) to 'weatherforecast_swift.CellForWeather' (0x10005f810). というメッセージと共に落ちるのですが、なぜでしょうか?
_Kentarou

2016/08/12 00:30 編集

おそらくセルを作成するところでUITableViewCellをカスタムクラスにキャストできなくて落ちていると思います。 Custom classで自身のセルクラスを指定すること、IdentifierもStoryboardとコードで同じものを指定してみてください。
maplesugar_17

2016/08/12 03:39

アドバイスをありがとうございます、早速やってみようと思います!
maplesugar_17

2016/08/12 04:30

指定されているのですが、やはり落ちてしまいます。コメント欄ですとコードが綺麗に出ないので、質問を編集致します。
_Kentarou

2016/08/12 10:14 編集

セルクラスのコードも載せてください。 CellForWeather().setdata("Tokyo",iconimg: UIImage(named:"01d.png")!) と記述していますがなぜ以下のように設定してないのですか? cell_object.setdata("Tokyo",iconimg: UIImage(named:"01d.png")!) // セルの向きを横向きに という処理がありますが最終的にどのような見た目になる予定ですか?
maplesugar_17

2016/08/12 15:36

申し訳ありません、編集しました。cell_objectで設定するのですね、ありがとうございます! tableviewを横向きに(横スクロールで)しようとしています。
_Kentarou

2016/08/12 15:41

if cell==nilの時の挙動を書かないといけないのだと思いますが これは今は書かなく大丈夫です、まだ落ちますか? TableViewを横向にしたい、、、昔はこの方法を使ってましたが、今はUICollectionViewを使用して横スクロールするのが現実的だと思います。
maplesugar_17

2016/08/12 16:05

まだ落ちます。やはり同じエラーです。
_Kentarou

2016/08/12 16:09

絶対に記述ミス等があると思うのですが、断片的なコードだと限界があります。 Storyboardの設定も全く見えませんし、、、 プロジェクトを何処かに載せて頂くか、自身で私のコードとの差を見つけて頂くしか無いと思います。
maplesugar_17

2016/08/12 16:44

アドバイスをありがとうございます、_Kentarouさんの作っていただいたコードと比較して、自力で解決してみようと思います。 もしまた分からない事がありましたら、ご教示お願い致します
maplesugar_17

2016/08/12 18:16

この問題については、解決しました!! 本当にデモをありがとうございます。
_Kentarou

2016/08/12 18:26

良かったです☆彡
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問