私は、UITabBarControllerの中にあるUITableViewにいくつかの(今はハードコードされている)データを表示しようとしていますが、行を埋めるのが難しいです。UITabBarControllerにUITableViewデータを表示する正しいパターンは何ですか?
ここにここに私の予約ストア(ReservationStore.swift)
import UIKit
class ReservationStore {
// Store all our schedules
var allReservations = [Reservation]()
func createReservation() -> Reservation {
let newReservation = Reservation(tailNumber: "N53440", aircraftType: "C172S", arrivalTime: "07-06-2016 07:00am", eta: "1:58")
allReservations.append(newReservation)
return newReservation
}
init() {
createReservation()
}
}
、ここにコードが私のUITableView図であるされて、私のデータオブジェクト(Reservation.swift)
import UIKit
class Reservation: NSObject {
var tailNumber: String
var aircraftType: String
var arrivalTime: String
var eta: String
init(tailNumber: String, aircraftType: String, arrivalTime: String, eta: String) {
self.tailNumber = tailNumber
self.aircraftType = aircraftType
self.arrivalTime = arrivalTime
self.eta = eta
super.init()
}
}
ためのコードがありますコントローラ(ScheduleViewController.swift)
import UIKit
class ScheduleViewController: UITableViewController {
var reservationStore: ReservationStore!
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return reservationStore.allReservations.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("UITableViewCell", forIndexPath: indexPath)
let item = reservationStore.allReservations[indexPath.row]
cell.textLabel?.text = item.tailNumber
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let reservationStore = ReservationStore()
let tabController = segue.destinationViewController as! UITabBarController
let reservationController = tabController.viewControllers![1] as! ScheduleViewController
reservationController.reservationStore = reservationStore
}
}
致命的なエラーが発生しました:unexpe返されるときにオプション値をアンラップしている間に無限に見つかりました。reservationStore.allReservations.count
ユーザがスケジュールのUITabController項目をクリックしてビューがロードされる直前に、prepareForSegueが呼び出されると思います。これは私のReservationStoreのinit()をトリガーし、配列内に1つの要素を作成するはずですが、配列がカウントされるまでにnilなので、起こっているとは思われません。
この作成はprepareForSegueにある必要がありますか?誰かが正しい方向に私を指すことができるか、次の頭にどこにこれが一日かそうではないか分からないこれを乱されている?
をほらああ!ありがとうございました! –