SORU
4 HAZİRAN 2014, ÇARŞAMBA


Ölümcül hata: uygulanmayan başlatıcı 'init' derse kullanımı

Swift dili ile kalan projeme devam etmeye karar verdim.Özel Sınıf eklediğim zaman (.benim müzik sınıfı UİViewcontroller için alt eden swift sınıfı) viewcontroller ve proje aniden hata şu: app crash yüklendi

fatal error: use of unimplemented initializer 'init(coder:)' for class 

Bu bir kod

import UIKit

class TestViewController: UIViewController {

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        // Custom initialization
    }

    override func viewDidLoad() {
        super.viewDidLoad()


              // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    /*
    // #pragma mark - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
    }
    */

}

Lütfen bir şey Öner

CEVAP
4 HAZİRAN 2014, ÇARŞAMBA


Sorun

Mevcut çalıştığınız destinationViewController initWithCoder yöntemi eksik.

viewController örneğini çağrılır initWithCoder yöntem, bu gibi UIStoryboard yönlendirme: Instantiate and Present a viewController in Swift

Sorununu birbirinden farklı başlatıcı davranışlara yol açtığı gibi görünüyorSwiftveObjective-C.


Çözüm

Objective-Cotomatik olarak destinationViewController eklemek ihtiyacımız yok, bu yüzden initWithCoder devralır.

Swifteğer init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) destinationViewController varsa init(coder aDecoder: NSCoder!) ekleme gerektirir.


1. İlk yöntemi

Elle ekleyerek init(coder aDecoder: NSCoder!) uygulama aşağıda destinationViewController için kod.

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}

2. İkinci yöntem

DestinationViewController edecektir init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle? kaldırma @ gibi üst sınıf gerekli başlatıcılar tüm devralırDave Wooddikkat çekti.

//Code to be removed from your destinationViewController
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    // Here you can init your properties
}

Bazen bu durumda ilk yöntem için sopa gerekir, bu yüzden bunlardan birine ihtiyacım var, böylece kendi değerlerini başlatma için gereklidir.


Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • Howcast

    Howcast

    4 EKİM 2007
  • Tomas N

    Tomas N

    14 Kasım 2010