我继承了UIView的类里创建了一个tableView,当我在这个UIView里设置按钮的事件能成功:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
self.customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, 80)];
self.myButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 20, 100, 40)];
self.myButton.backgroundColor = [UIColor redColor];
[self.myButton addTarget:self action:@selector(doButonAction) forControlEvents:UIControlEventTouchUpInside];
[self.customView addSubview:self.myButton];
return self.customView;
}
但是,我把按钮公开,然后再controller里设置事件就不行。这是什么原因?
View:
@property (strong, nonatomic) UIButton *myButton;
controller:
CustomView *cv = [[CustomView alloc] initWithFrame:self.view.bounds ];
[cv.myButton addTarget:self action:@selector(doButtonAction11) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:cv];
Coupez un point d'arrêt et voyez si myButton est créé lorsque vous ajoutezTarget. A-t-il de la mémoire ?
Je vous suggère de créer un bloc et de l'appeler lorsque vous cliquez dessus
Vous devez vous assurer que myButton est initialisé.
Je n'ai jamais essayé de transmettre des événements comme celui-ci. Il est recommandé d'utiliser bloquer/déléguer/notifier. Personnellement, je pense que l'objet n'est pas créé. Vous pouvez l'imprimer pour voir si l'objet contrôleur existe.
Il se peut que le pied de votre tableview n'ait pas de hauteur, vous ne pouvez donc pas le voir clairement.