2016-04-14 14 views
2

Ich habe versucht, einen Viewcontroller von einer benutzerdefinierten Zelle mit Delegaten zu laden. Aber ich bekomme keine NULL von der Gruppe Delegate! Hier ist ein Beispiel, wenn jemand helfen kann! 1. In ZellWie lade ich einen Viewcontroller aus einer XIB-Datei?

protocol hotelFindDelegate{ 
func modalDidFinished(modalText: String) 
} 
class hotelFindCell: UITableViewCell { 

var delegate:hotelFindDelegate? 
@IBAction func findButton(sender: AnyObject) {  

    self.delegate!.modalDidFinished("HELLO") 
    print("Damn nothing works") 
} 

2. In Hauptansicht

class MainViewController:hotelFindDelegate { 
let modalView = hotelFindCell() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.modalView?.delegate = self 
} 

func modalDidFinished(modalText: String){ 
let viewController:UIViewController = UIStoryboard(name: "Main", bundle:   nil).instantiateViewControllerWithIdentifier("HotelListVC") as UIViewController 

self.presentViewController(viewController, animated: false, completion: nil) 
self.modalView.delegate = self 
print(modalText) 
} 
+0

Sie wollen VC von XIB laden ..? Ihr angegebener Code stimmt nicht mit Ihrer Frage überein. –

+1

Ja! Ich versuche Delegierte zu verwenden. Kümmern Sie sich nicht um den Code. – Parion

+0

Das ist in Ordnung, wenn Sie Delegaten verwenden oder etwas anderes tun, aber Ihr Code sollte mindestens Ihren Anforderungen entsprechen. Zuerst entscheidest du, dass du den View Controller von XIB oder Storyboard laden willst. –

Antwort

0

NSBundle.mainBundle() loadNibNamed. ("Viewcontroller", Inhaber: selbst, Optionen: nil)

1

Führen Sie die folgenden Schritte aus, um den Ansichtscontroller von XIB zu laden.

let settingVC : SettingsViewController = SettingsViewController(nibName :"SettingsViewController",bundle : nil) 

später können Sie die gleiche Ansicht Controller-Objekt wie

schieben
self.navigationController?.pushViewController(settingsVC, animated: true)