Placez UIView au-dessus de toutes les autres vues
Quelqu'un peut-il m'aider sur la façon de faire de faire UIView créé dans le code pour être sur le dessus de tous les autres? où tableView est le parent de la vue et de la subSelectionView est ma coutume frères et sœurs, je veux faire sur le dessus de la tableView.. j'ai ce code ci-dessous:
C'est le code source complet de mon didSelectRowAtIndexPath:, d'où je ajouter par UIView exemple..
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Execute upon selection
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[[tableView viewWithTag:199]removeFromSuperview];
//Get the cell size
CGSize cellSize = [tableView cellForRowAtIndexPath:indexPath].frame.size;
//Contact Details Container
UIView *subSelectionView;
if(indexPath.row < [contacts count] - 6)
subSelectionView = [[UIView alloc]initWithFrame:CGRectMake(10, 0, (int)cellSize.width - 20, (int)cellSize.height + 130)];
subSelectionView.backgroundColor = [UIColor grayColor];
subSelectionView.layer.borderColor = [UIColor grayColor].CGColor;
subSelectionView.layer.borderWidth = 1;
subSelectionView.alpha = 0.9;
subSelectionView.tag = 199;
subSelectionView.layer.cornerRadius = 5.0;
//Contact Name Container
UIView *contactNameSubSelectionView;
if(indexPath.row < [contacts count] - 6)
contactNameSubSelectionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, (int)cellSize.width - 20, (int)cellSize.height)];
contactNameSubSelectionView.backgroundColor = [UIColor grayColor];
contactNameSubSelectionView.alpha = 0.5;
[subSelectionView addSubview:contactNameSubSelectionView];
//Contact Name Label
Contacts *contact = [self.contacts objectAtIndex:indexPath.row];
NSString *contactName = [NSString stringWithFormat:@" %@ %@ ", contact.fname, contact.lname];
UILabel *contactNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, (int)cellSize.width, (int)cellSize.height)];
contactNameLabel.layer.cornerRadius = 4.0;
[contactNameLabel setText: contactName];
[contactNameLabel setTextColor:[UIColor blackColor]];
[contactNameLabel setFont:[UIFont boldSystemFontOfSize:[UIFont systemFontSize]]];
[contactNameSubSelectionView addSubview:(UIView *)contactNameLabel];
//Buttons
UIButton *buttonMobile = [[UIButton alloc]initWithFrame:CGRectMake(10, cellSize.height + 10, 30, 30)];
buttonMobile.layer.borderWidth = 1;
[buttonMobile setTitle:@"..." forState:UIControlStateNormal];
[buttonMobile addTarget:self action:@selector(btPressed:) forControlEvents:UIControlStateNormal];
[subSelectionView addSubview:(UIView *) buttonMobile];
[[tableView cellForRowAtIndexPath:indexPath]insertSubview:subSelectionView aboveSubview:self.view];
[self.parentViewController.view bringSubviewToFront:subSelectionView];
[tableView reloadData];
}
mais ne fonctionne pas..
L'image ci-dessous montre mon subSelectionView, le bouton est en elle et la subSelectionView est à l'intérieur de la tableView. Maintenant, quand j'ai cliqué sur ce bouton, le problème est que je ne peut pas cliquer dessus. Il se concentre directement à la tableView même avec la présence de mes codes. Quelqu'un peut-il m'aider s'il vous plaît?....
source d'informationauteur Aldee
Vous devez vous connecter pour publier un commentaire.
Si j'ai lu votre question votre problème est que vous ne pouvez pas vous appuyez sur le bouton dans votre nouveau point de vue qui est au sommet de la tableview?
Et lorsque vous appuyez dessus, la UITableView ci-dessous répond?
Cela signifie que le UIButton ne pas reconnaître qu'il est exploité, et l'événement se passe à la prochaine sous-vue ci-dessous, elle est traitée.
Maintenant, il y a beaucoup de causes possibles de ce comportement - vous peut avoir une interaction de l'utilisateur désactivé ou les UIViewil peut c'est Activé propriété est définie sur NON ou il peut être au-delà des obligations de la UIView (iOS suppose automatiquement que si un robinet est en dehors des limites du rectangle il a raté le récepteur).
Aussi, les robinets sont ignorées si votre alpha est réglé sur 0,0.
Vous devriez vérifier tous les ci-dessus.
Il existe une méthode bringSubViewToFront de UIView instance. Vous pouvez utiliser cette méthode.
par exemple
MODIFIER
dans votre cas, il devrait être comme,
Vous pouvez placer cette sous-vue supérieure de l'avis de la pile. Cela peut être fait facilement dans Interface Builder.
Ici
Label - files
est placé ontop deTable View - all files
. N'est-ce pas ce que vous voulez?ou si ne fonctionne pas essayez
Utilisation
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
fonction deUIView
avec le NSArray de des sous-vues qui vous obtenez à partir de UIView de des sous-vues propriété ...Dans Swift, vous pouvez le faire: