Я добавляю кнопку в середине моего initWithNibName:bundle:
, когда я добавляю вид кнопки в self.view, вид начинает инициализироваться, прежде чем добавить кнопку.Таким образом, код в viewDidLoad
срабатывает до того, как initWithNibName:bundle:
закончится.Под addSubview есть код, который используется в viewDidLoad
и вызывает его сбой / не работает, так как код инициализации не запущен.
У меня был такой же опыт, когда я добавлял код кнопки в метод viewDidLoad
.В .xib есть UITableView, и таблица инициализируется до того, как запускается остальная часть viewDidLoad, и это приводит к тому, что tableView получает неверные данные.
Как лучше всего добавлять представление в представление, когда выинициируете и загружаете представление?просто поместите все addSubViews перед Return?
Спасибо!
Вот мой initWithNibName: bundle:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nil];
[self setIoUIDebug:(IoUIDebugSelectorNames)];
if (IoUIDebug & IoUIDebugSelectorNames) {
NSLog(@"%@ - %@", [self description], NSStringFromSelector(_cmd) );
}
CGRect frame = CGRectMake(20, 521, 500, 37);
saveButton = [UIButton newButtonWithTitle:NSLocalizedStringFromTable(@"Save Animation Label",@"ScreenEditor",@"Save Animation Label")
target:self
selector:@selector(saveButtonPressedAction:)
frame:frame
image:[UIImage imageNamed:@"BlueButtonSmall.png"]
imagePressed:[UIImage imageNamed:@"BlueButtonSmallPressed.png"]
darkTextColor:NO];
[self.view addSubview:saveButton]; // <- Right here I'll hit breakpoints in other parts of viewDidLoad and cellForRowAtIndexPath, before the lined below get executed.
[saveButton setEnabled: NO];
[saveButton setUserInteractionEnabled: NO];
newAnimation = nil;
selectedSysCDAnimation = nil;
selectedIoCDTag = nil;
animationSaved = NO;
return self;
}