現在、2つのビューコントローラと、電話番号などの店舗の詳細を扱う迅速なファイルを扱っています。メインのViewControllerとDetailsViewControllerがあります。プロパティ値が表示されますが、ラベルに割り当てられている場合は表示されません。
私は現在、GoogleプレイスAPIからデータを取得しており、値をPlaceDetailsクラスに正常に保存することができます。データのテスト - コンソールに印刷できます。しかし、APIから取得した値をUILabelに割り当てると、アプリケーションがクラッシュし、プロパティの値がnilであることが示されます。なぜこれが当てはまるのか分かりません。私は2つのView Controllerで、PlaceDetailsクラスを正しくインスタンス化していて、そのプロパティに正しくアクセスしていると感じますが、間違っていることに気づいていないものがあります。
class ViewController: UIViewController
{
let placeDetails = PlaceDetails()
let detailsVC = DetailsViewController()
func tapLabel(sender: UITapGestureRecognizer)
{
// print statement successfully prints out the stored value as - Optional("1 888-555-5555")
print(placeDetails.phoneNumber)
// assigning value to label causes a crash stating value is nil
detailsVC.phoneNumberLabel.text = placeDetails.phoneNumber!
self.performSegueWithIdentifier("showDetailsVC", sender: self)
}
}
class DetailsViewController: UIViewController
{
@IBOutlet weak var phoneNumberLabel : UILabel!
let placeDetails = PlaceDetails()
override func viewDidLoad()
{
super.viewDidLoad()
//This approach does not cause a crash but outputs nil to the console for both the print statement and the assignment statement
print(placeDetails.phoneNumber)
phoneNumberLabel.text = placeDetails.phoneNumber!
}
}
class PlaceDetails
{
override init()
{
super.init()
}
var phoneNumber : String? //viewcontroller actions give this class property its value
}
はphoneNumberLabelがxibに接続されていますか? –
@john elemans phoneNumberLabelはすべて、ストーリーボード上のDetailsViewController上のUILabelとして接続されています:) – lifewithelliott
はい、クラス変数にリンクされていますか? IBでUILabelを右クリックすると、Referencing Outletsの下にリンクされているかどうかが表示されますか? –