Почему эта UIButton не инициализируется в тот момент, когда я вызываю метод init в его суперпредставлении? - PullRequest
1 голос
/ 27 марта 2011

Я работаю с созданным мной контроллером представления (MyViewController), который имеет UIB-кнопку под названием «кнопка», вот код, который я пытался заставить его работать:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
MyViewController *myViewController=[[[MyViewController alloc] init] autorelease];
[myViewController.button addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside];
return footerController.view;
}

Я не уверен, что с ним не так, но, видимо, я могу это исправить, если я сделаю это:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
MyViewController *myViewController=[[[MyViewController alloc] init] autorelease];
[myViewController.view addSubview:nil];
[myViewController.button addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside];
return footerController.view;
}

Может кто-нибудь сказать, пожалуйста, почему это происходит? И есть ли способ обойти это, потому что я не думаю, что это нормально делать ..

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

То, что сказала Аноми, правильно ... Я нашел способ обойти это .. Я не могу получить доступ к кнопке напрямую с помощью myViewController.button, вместо этого я должен использовать метод: [myViewController.view viewWithTag:buttonTag].Таким образом, я проверяю, что кнопка уже инициализирована.

0 голосов
/ 27 марта 2011

Перо не загружается до тех пор, пока оно не потребуется для сохранения памяти, о чем сообщает свойство view, к которому осуществляется доступ. Если возможно, было бы лучше выполнить такую ​​инициализацию в методе viewDidLoad MyViewController.

...