2017-09-20 9 views
0

ネストされたコレクションビュー内でテキストラベルを設定できる必要があります。 私はprint文内の各値を表示することができますが、私はUILabelに割り当てるとき、私は私が親コレクションビューからのデータにロードし、データソースに割り当てるよfatal error: unexpectedly found nil while unwrapping an Optional valueSwift 3のネストされたコレクションビュー内のラベルに値を追加

を得る:

private var timeZone: [AlternativeTimeZone]! 
var setTimeZones: [AlternativeTimeZone] { 
    get { 
     return self.timeZone 
    } 
    set { 
     self.timeZone = newValue 
    } 
} 

childcollectionviewService.setTimeZones = alternateTimesZonesData 

サービスは、ビューコントローラを小さく保つために、親コレクションビューへのすべての参照を格納する外部クラスです。

ネストされたコレクションビューコードが標準的に見えます。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return UICollectionViewCell() } 
    print("Time Zone:", timeZone[indexPath.row].time) 
    cell.alternateTime.text = timeZone[indexPath.row].time 
    return cell 
} 

AlternativeTimeZoneは、テキスト文字列プロパティを持つ単純な構造体です。私はネストされたコレクションビューの内側にあるので、indexPathが子をオーバーライドすることができますか?

答えて

0

は、私は問題はこのラインであるかもしれないと思う:

guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return UICollectionViewCell() } 

これと交換してみてください:あなたがのためのセルテンプレートの壊れた出口リンクを持っているよう

guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return AlternateTimeZoneCell() } 
+0

まだ同じ問題です。 – user7684436

0

それは私に聞こえますAlternateTimeZoneCellalternateTimeフィールドそれがあなたがロードするセルにnilかどうかを確認してください。また、デキューが成功しているかどうかを確認してください。

+0

各セルをスクロールするとデキューが成功し、結果がコンソールに表示されます。セルは、ストーリーボード経由でコレクションビューの内側にあり、IDインスペクタ内のセルに関連付けられています。再開可能な名前も設定されます。 – user7684436

+0

いいえ、デキューするセルを見ると、 'alternateTime'プロパティはnilですか?アウトレットはデフォルトで「暗黙のアンラップされたオプション」として設定されているので、コンセントが接続されていないと、参照しようとするとクラッシュします。 –

+0

はい 'alternateTime'はnilです。 – user7684436

0

私はそれがinitは、データがそれに与えられた前alternateTime値を設定しようとしていたが判明したとしてawakeFromNib方法にデータソースとデリゲートの宣言を削除することによってこの問題を解決するために管理。

関連する問題