Ich denke, ich vermisse etwas Grundlegendes und so möchte ich die Community um etwas Hilfe bitten. Ich erstelle eine App, die auf einer grundlegenden iPhone Utility-Anwendung basiert. Mein MainView und FlipsideView teilen einige Elemente, also habe ich separate ViewControllers und Nib-Dateien für diese Teile erstellt. Um dies zu tun, habe ich folgendes getan: 1. Erstellt einen Viewcontroller namens searchDateViewController, der der Eigentümer der searchDateView.xib ist. 2. searchDateView.xib ist im Prinzip eine UIView mit einem UILabel darin, die View ist korrekt verkabelt 3. Innerhalb beide MainViewController.m und FlipsideViewController.m ich füge ein Subview als folllows:superview und parentviewcontroller nil nach dem Hinzufügen einer Unteransicht
- (void)loadView{
[super loadView];
searchDateViewController = [[SearchDateViewController alloc] initWithNibName:@"SearchDateView" bundle:nil];
[[searchDateViewController view] setFrame:[searchDateView frame]];
[[self view] addSubview:[searchDateViewController view]];
...
}
Alles Displays und funktioniert gut. Grundsätzlich wird abhängig von den Aktionen, die in den Haupt- und Seitenansichten vorkommen, das UILabel der Feder geändert. Allerdings wollte ich etwas anderes machen, wenn der searchDateViewController aus dem MainView oder dem FlipsideView geladen wird. Ich kann jedoch nicht herausfinden, welcher ViewController die Unteransicht searchDateViewController hinzufügt.
In searchDateViewController Ich habe versucht:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"superview %@", self.view.superview);
NSLog(@"parentviewcontroller %@", self.parentViewController);
}
In beiden Fällen I Null zu bekommen.
Also meine Frage ist - kann ich herausfinden, welche ViewController SearchDateViewController eine Unteransicht hinzufügen? Wenn das so ist, wie? Oder wenn meine Logik hier völlig durcheinander ist, wie soll ich das machen?
Danke!
Okay, danke, dass Sie mich in Bezug auf Subviews und UIViewController-Unterklassen in die richtige Richtung weisen. Wenn ich SearchDateViewController zu einer Unterklasse von NSObject mache, wie wird sich das auf die Art und Weise auswirken, wie ich die Subviews hinzufüge und mit der Nib einfüge? Ich habe keine Beispiele für Subviews als Objekte statt Viewcontrollers gefunden, aber ich möchte beginnen, zu übernehmen, was auch immer in diesem Fall üblich ist. Lass es mich wissen, wenn du weitere Tipps hast - danke! Auch - Sie beide vorgeschlagen, mit dem Elterncontroller, was sinnvoll ist, aber welche Rolle spielt Superview? Wäre das hier angemessener? – deadroxy
Wenn Sie SearchDateViewController zu einer Unterklasse von NSObject machen, wird Ihr Problem nicht beseitigt, sondern nur zukünftige Probleme vermieden, da UIViewControllers nicht wirklich für Ansichten verwendet werden sollen, die nicht den gesamten IMHO des gesamten Fensters belegen. Um Ihr Problem zu lösen, sollte Ihr Ansichtsanpassungscode nicht auf self.parentViewController oder view.superview basieren. Definieren Sie stattdessen eine Eigenschaft in SearchDateViewController (könnte ein BOOL oder eine Enumeration sein), die Sie dann abfragen, um zu entscheiden, wie die Ansicht angepasst wird. Das Objekt, das den SearchDateViewController erstellt, sollte die Eigenschaft festlegen. –
Ich habe genau wie Sie gesagt, eine Eigenschaft in der SearchDateViewController-Klasse erstellt, die gut funktioniert. Ich bin jedoch immer noch verwirrt darüber, wie man von UIViewController nach UIView/NSObject wechselt. Insbesondere wer wird der Besitzer der Datei von SearchDateView? Ich habe alles versucht und alles, was ich getan habe, führt zu Fehlern ... – deadroxy