2012-08-04 6 views
8

Ich möchte den Text in die Zwischenablage kopieren, wenn die Anwendung startet.iOS SDK bekommen Zwischenablage Text auf Anwendung laden

Ich kann folgenden Text verwenden, um den verfügbaren Text aus der Zwischenablage zu erhalten. Aber ich muss diesen Wert in einem anderen Viewcontroller verwenden. Wie kann ich diesen Wert an meinen Viewcontroller übergeben?

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

tun Warum nicht einfach rufen Sie [UIPasteboard GeneralPastboard] .string in Ihrem View-Controller? –

+0

viewController unterstützt das Ereignis applicationDidBecomeActive nicht. Ich möchte den Inhalt der Zwischenablage abrufen, wenn die Anwendung vom Hintergrund aus aktiv wird. – sleepwalkerfx

Antwort

9

Declare und ein Verfahren auf Ihrem VC implementieren, die Sie aus dem AppDelegate rufen immer aktiv:

@inferface ViewController: UIViewController { 
    /* etc. */ 
} 

- (void)handlePasteboardString:(NSString *)s; 

@end 

in AppDelegate:

- (void)applicationDidBecomeActive:(UIApplication *)a 
{ 
    [self.mainViewController handlePasteboardString:[UIPasteboard generalPasteboard].string]; 
} 
+0

hmm ich habe das versucht, aber es gibt mir einen Fehler: AppDelegate.m: 65: 12: Eigenschaft 'ViewController' nicht auf Objekt vom Typ 'AppDelegate *' gefunden ... Meine Hauptansicht heißt ViewController, was fehlt? sollte ich einige Delegaten zu meinem Viewcontroller hinzufügen? – Fredv

+5

@Fredv Ach komm schon ... –

10

Ein viel besserer Weg von Dies würde so aussehen, dass ein Beobachter (im View-Controller) für das UIApplicationDidBecomeActiveNotification-Ereignis hinzugefügt wird. Auf diese Weise vermeiden Sie die unnötige Kopplung zwischen dem Anwendungsdelegaten und dem View-Controller.

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(getClipboardString:) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 

Edit: Du vergesse nicht den Beobachter zu entfernen, wenn der View-Controller entfernt wird:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

Nicht sicher, wenn Sie die Zwischenablage Artikel wollen, aber wenn es ist, wenn die spezifischen View-Controller angezeigt oder um gezeigt zu werden, können Sie es in der viewDidLoad für diese Ansicht Controller