Zuerst müssen Sie die view
Steckdose in der HeadViewController
Klasse nicht definieren. Es wird automatisch von der Superklasse UIViewController
übernommen.
Dann empfehle ich Ihnen, die Ansicht von HeadViewController
direkt zu Ihrer aktuellen Ansicht hinzuzufügen. Z.B.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];
headViewController.view.frame = CGRectMake(0, 0, 320, 120);
[self.view addSubview:headViewController.view];
}
Aber, wenn Sie ARC verwenden (Automatic Reference Counting), die headViewController
Instanz wird wahrscheinlich nach dem Ende des viewDidLoad
Verfahren werden ausgeplant. Es ist praktisch (und ich würde sagen, es ist obligatorisch), diese Instanz einer lokalen Variablen in dem Controller zuzuweisen, den Sie gerade anzeigen. Auf diese Weise können Sie später bei Bedarf die Komponenten der Ansicht bearbeiten, die Instanz bleibt erhalten und alles andere funktioniert einwandfrei. Sie sollten so etwas wie haben:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];
headViewController.view.frame = CGRectMake(0, 0, 320, 120);
[self.view addSubview:headViewController.view];
}
und
@interface MyController()
@property (nonatomic, strong) HeadViewController *headViewController;
@end
in der verdeckten Schnittstellendefinition zu Beginn der .m
Klasse Implementierungsdatei.
Ich korrigieren Sie: headViewController.view ist Null, wenn es nicht als Unteransicht hinzugefügt. müssen addsubview austauschen und den Rahmen setzen – NeverBe
Überprüfen Sie mein Update über ARC. Wenn 'headViewController.view'' nil' ist, überprüfen Sie die Verbindung der Ansicht mit dem Controller in der NIB-Datei. Ist es "nil" nur innerhalb dieser Methode (Outlet-Problem) oder nachdem es beendet ist (ARC-Problem)? – marzapower
Ich habe den Code geändert, genau wie du es mir gesagt hast, und ich definiere eine Ansicht, weil ich die Standardansicht lösche. Und es gibt noch keine headViewController.view ... ich bin verwirrt. – jxdwinter