2015-06-08 33 views
5

Chcę wiedzieć, czy mogę wywołać metodę delegowania aplikacji z innego kontrolera ViewController.Metoda delegowania aplikacji wywołania z kontrolera widoku

Po uruchomieniu aplikacji wywoływana jest metoda application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool. Czy mogę wywołać tę metodę po raz drugi z innego kontrolera widoku?

+4

może, ale nie należy Ci –

+0

możesz mi pokazać, jak to zrobić?/ –

+2

Sprawdź to wyjaśnienie: http://stackoverflow.com/a/8569646/3202193 –

Odpowiedz

23

Nie wiesz, dlaczego chcesz to zrobić. Prawdopodobnie nie powinien, ale w celu odpowiedzi na pytanie o to:

// get a reference to the app delegate 
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate 

// call didFinishLaunchWithOptions ... why? 
appDelegate?.application(UIApplication.shared, didFinishLaunchingWithOptions: nil) 
+0

thahks for helping me –

+0

Nie ma problemu. Jeśli masz czas, wyjaśnij, dlaczego chcesz wywołać tę funkcję dwukrotnie. W każdym razie przeczytaj przeczytany post Ashish Kakkad. –

+0

kiedy aplikacja pierwszy lunch następnie wyświetla stronę z warunkami i warunkami, gdy użytkownik kliknie na zgodzić się, a następnie może przejść do następnego logowania vc i może się zalogować, ale użytkownik kliknie przycisk odrzuć, a następnie zadzwoń dalej vc, ale użytkownik naciśnij zaloguj się poszedł do strony z warunkami i zgadzam się –

7

Ta metoda jest wywoływana tylko raz po uruchomieniu aplikacji. Nie możesz z ViewController. Zamiast tego utwórz metodę zdefiniowaną przez użytkownika w AppDelegete. i wywołaj tę metodę z ViewController. Uzyskując obiekt AppDelegate.

AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate; 
[appDel <Your method>]; 
+0

dzięki za pomoc –

+0

Brakuje "[" w pierwszej linii. Zgaduję, że to jest poprawiona linia? 'AppDelegate * appDel = [(AppDelegate *) delegat [UIApplication sharedApplication]];' – Mymozaaa

13

w Swift 3.0 można nazwać jako:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
appDelegate.anyAppDelegateInstaceMethod() 
1

Konstruktorzy:

Dodaj konstruktora w klasie AppDelegate na końcu kodu

Swift 3.x

class func shared() -> AppDelegate 
{ 
    return UIApplication.shared.delegate as! AppDelegate 
} 

Swift 2.x

func appDelegate() -> AppDelegate 
{ 
return UIApplication.sharedApplication().delegate as! AppDelegate 
} 

i dodaj var jak ten

var boolForFun = Bool() 

Jak korzystać odniesienia w swojej klasie?

Metoda

dla szybkich 3x functins dostępowych lub zmiennych

AppDelegate.shared().boolForFun = true 

dla innego

appDelegate().methodFoo() 

Zmienna

appDelegate().foo