2017-02-02 3 views
1

이라는 ViewController 파일과 TwoViewController.xib이라는 nib 파일이 있습니다. ↓viewcontroller (swift) 초기화에 대해

class TwoViewController: UIViewController { 
    var pageTitle: String? 

    ・・・・・・ 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    ・・・・・・ 
} 

다음과 같은

TwoViewController.swift

, 나는 TwoViewController 새로운이 ↓

class OneViewController: UIViewController { 

    ・・・・・・ 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    ・・・・・・ 
    func presentTwo() { 
     let two = new TwoViewController() 
     two.pageTitle = "2222" 
     self.present(two, animated: false, completion: nil) 
    } 
} 

같은 OneViewController.swift에 그것을 제시, 나는 new TwoViewController 원하는과 재산 pageTitle에 가치를 설정합니다 같은 시간에 ↓ new TwoViewController(pageTitle: "22222")

그렇게하려면 TwoViewController에서 init 메서드를 만들어야한다고 생각합니다. 아래와 같이 init 메소드를 만들려고했습니다. 이 올바른지?

class TwoViewController: UIViewController { 
    var pageTitle: String 

    init(pageTitle: String) { 
     super.init(nibName: nil, bundle: nil) 
     self.pageTitle = pageTitle 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    ・・・・・・ 
} 

답변

0

이처럼 펜촉 파일에서 TwoViewController를 초기화해야합니다

let twoController = TwoViewController.init(nibName: "TwoViewController", bundle: nil) 

은 다음과 같이 당신의 pageTitle를을 초기화 할 수 있습니다

twoController.pageTitle = "2222" 

는이처럼 twoViewController을 제시 할 수 :

self.present(twoController, animated: false, completion: nil) 
1

그렇게 할 수는 있지만 일반적으로 모르는 일부 기본값으로 모든 이니셜 라이저에서 pageTitle을 초기화해야합니다.

따라서 이렇게하는 것은 일반적이지 않습니다. 대신 당신이 (funcTwo에) 원래 그랬던 것처럼, 초기화 후 속성 값을 할당하고, viewDidLoad에서 처리를 계속 :

class TwoViewController: UIViewController { 
    var pageTitle: String! 

    override func viewDidLoad() { 
     // use pageTitle to fill some outlet or so: 
     self.title = pageTitle 
    } 
} 

또는 pageTitle 선택을하고이 설정되어있는 경우 viewDidLoad에 확인. 그런데


:

let twoController = TwoViewController.init() 

으로 또는 명시 적으로

let twoController = TwoViewController.init(nibName: "TwoViewController", bundle: nil) 
: 이름 지정 방식을 따르고 뷰 컨트롤러처럼 XIB 파일의 이름을 경우 암시 적 양식을 사용할 수 있습니다