Die angenommene Antwort ist irreführend. wakeFromNib wird immer aufgerufen, nicht nur wenn eine Schreibspitze verwendet wird. aus dem Apple-docs:
awakeFromNib:
Bereitet den Empfänger für den Dienst, nachdem er von einer Interface Builder-Archiv oder NIB-Datei geladen wurde.
Link
Im nächsten Beispiel habe ich nur ein Storyboard verwendet habe du sehr leicht testen.
Dies ist unser Viewcontroller:
ViewController.m:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad");
}
-(void)awakeFromNib
{
NSLog(@"awakeFromNib in view controller");
}
@end
RedView.m:
#import "RedView.h"
@implementation RedView
-(void)awakeFromNib
{
NSLog(@"awakeFromNib inside RedView");
self.green.hidden = YES;
}
@end
Bestellung von Druck:
- awakeFromNib in View-Controller
- awakeFromNib innen RedView
- viewDidLoad
Und natürlich der Blick ins Grüne werden ausgeblendet.
Edit:
awakeFromNib nicht, wenn Sie Code verwenden, aufgerufen werden, um Ihre Ansicht zu erstellen, aber Sie können es selbst oder besser nennen noch Ihre eigene Methode erstellen.
Beispiel ohne Storyboard (nur Code):
RedView.m:
#import "RedView.h"
@implementation RedView
-(void)loadRedView
{
NSLog(@"loadRedView");
self.green = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
self.green.backgroundColor = [UIColor greenColor];
[self addSubview:self.green];
self.green.hidden = YES;
}
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.red = [[RedView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
self.red.backgroundColor = [UIColor redColor];
[self.view addSubview:self.red];
[self.red loadRedView];
}
@end
Wenn Ihre UIView "programmatisch erstellt wird, später", entfernen Sie Ihre Unteransicht an dieser Stelle –
Ich möchte alle für die UIView relevanten Code in der Klasse der UIView – Luda
Die akzeptierte Antwort ist irreführend. Ich habe eine ausführlichere Antwort hinzugefügt. – Segev