2016-08-29 4 views
-2

Ich entwickle gerade eine iOS App mit Xcode und Swift.Xcode, schnell; Call Funktion von einer anderen Klasse

Ich habe den folgenden Code in der Klasse ProfileEditProfileEdit.swift:

func updateProfile(sender: AnyObject) { 
     //  do something 
    } 

Es gibt auch eine andere Klasse namens ProfileMainProfileMain.swift. Ich habe diesen Code in ProfileMain:

@IBAction func button(sender: AnyObject) { 
     //  run func updateProfile in ProfileEdit.swift 
    } 

Wie kann ich laufen func updateProfile von @IBAction func button?

Ich schon googled. Lösung sollte sein:

@IBAction func titleButton(sender: AnyObject) { 
    ProfileEdit.updateProfile() 
} 

Aber ich bin immer diese Fehlermeldung:

Verwendung von Instanz Mitglieds updateProfile 'vom Typ 'ProfileEdit'; meinst du, stattdessen einen Wert vom Typ 'ProfileEdit' zu verwenden?

+1

'ProfileEdit.updateProfile()' funktioniert nicht, weil 'updateProfile()' ist keine Klassenfunktion. Sie benötigen einen Verweis auf eine Instanz von 'ProfileEdit', um' updateProfile() 'aufzurufen. Dies kann bedeuten, dass Sie der Methode eine 'ProfileEdit' Klasse übergeben oder ein' ProfileEdit' Objekt als eine Eigenschaft Ihrer 'ProfileMain' Klasse behalten. – keithbhunter

+0

Danke für deine Antwort. Weil ich ein Neuling bin, verstehe ich nicht, was du meinst. Könnten Sie bitte ein Beispiel geben? – David

+0

Sie sollten google "Verwendung von Instanz Mitglied bei Typ Fehler in Swift" Schlüsselwort. –

Antwort

0

updateProfile Funktion erwartet ein Argument von jeder Art von Klasse, und Sie werden nichts übergeben.
Versuchen Sie folgendes:

Klasse ProfileMan: {

var profileEditHandler : ProfileEdit = ProfileEdit() 


    @IBAction func button(sender: AnyObject) { 

      profileEditHandler.updateProfile(sender)    

    } 

}

0

Sie dieses Konzept unter Verwendung von Singleton tun können

class ProfileEdit: NSObject 
{ 
    static let sharedInstance = ProfileEdit() 

    func updateProfile() 
    { 
    } 
} 

jetzt können Sie updateProfile Verfahren wie ProfileEdit.sharedInstance.updateProfile() von jedem Anruf Klasse Ihrer Bewerbung.

wenn Ihr ProfileEdit eine View-Controller-Klasse ist Sie instanziieren müssen, dass

let storyBoard = UIStoryboard(name:"StoryBoardName", bundle: nil) 
let editView = storyBoard.instantiateViewControllerWithIdentifier("viewcontrolleridentifier") as! ProfileEdit 

nun der Aufruf der Methode editView.updateProfile()

Verwandte Themen