2010-12-06 2 views
0

Ich habe eine Tab Bar Anwendung mit Xcode erstellt, die als zwei Ansichten.Senden Sie Daten mithilfe von Prebuilt UITabBarController an eine andere Ansicht?

Die secound-Ansicht ist ein UITableViewController.

Was ich tun muss, sendet Daten an diese Ansicht, wenn die zweite Registerkarte gedrückt wird. Ich habe die Tab-Leiste auf meine AppDelegate Klasse delegiert und diese Funktion implementiert:

-(void)tabBarController:(UITabBarController*)tabBarController didSelectViewController:(UIViewController*)viewController 
{ 
    // Override point for customization after application launch. 
    statisticsViewController* assignmentListcont = [statisticsViewController alloc]; 

    NSManagedObjectContext* context = [self managedObjectContext]; 

    assignmentListcont.managedObjectContext = context; 

    [assignmentListcont release]; 

} 

Die zweite Ansicht ist die Anzeige in Ordnung, aber die Daten übergeben worden ist. Ich stelle es mir vor, weil ich den Übergang der zweiten Ansichten nicht programmiert habe, aber ich bin nicht sicher, wie ich das machen soll, wenn ich bereits eine .xib-Datei für mich habe? Gibt es eine Möglichkeit, die Daten einfach ohne Probleme zu übergeben oder die Daten einmal in der Ansicht abzurufen?

Antwort

0

Sie könnten Benachrichtigungen verwenden.

In der Ansicht, dass Sie die Daten erhalten möchten, setzen Sie diese in viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(yourSelector:) 
             name:@"addedData" 
             object:nil]; 

dann das Verfahren implementieren, die diese Daten empfängt:

- (void)yourSelector:(NSNotification *)notification { 
     Foo *foo; 
    foo = [notification object]; 
    //do something else 
} 

nun in der Klasse, wo die Daten stammt von, Sie veröffentlichen eine Benachrichtigung, dass neue Daten erstellt wurden. Außerdem übergeben Sie die Daten, die die andere Methode erhalten soll.

[[NSNotificationCenter defaultCenter] postNotificationName:@"addedData" 
             object:foo]; 
+0

Vielen Dank für Ihre Antwort, am Ende habe ich die globale Delegatmethode verwendet von http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html. – Demonofloom

+0

Kein Problem! Wünsche dir den besten Erfolg. :) –

0

Ich habe dies getan, einen Wert von einem View-Controller zu einem anderen zu senden, hoffe, es hilft

UITabBarViewController *var = [self.storyboard instantiateViewControllerWithIdentifier:@"name"]; //I select the UITabBarController 
otherViewController *var2 = [var.childViewControllers objectAtIndex:0]; //I Select the first ViewController from that UITabBarController 
var2.variable = @"value"; 
[self.navigationController pushViewController:var animated:YES];