Pour apparaître un popover à côté du accesory u peut utiliser ce code :)
J'utilise cela pour plus utilisation avancée:
- trouve accesoryView personnalisé (cell.accesoryView)
- si elle est vide, trouver généré accesoryView (UIButton) si la cellule a
- si le UIButton n'existe pas, trouver une vue de Contet cellulaire (UITableViewCellContentView)
- si la cellule vue Contet n'existe pas, utilisez la vue des cellules
Peut être utilisé pour UIActionSheet ou UIPopoverController.
Voici mon code:
UIView *accessoryView = cell.accessoryView; // finds custom accesoryView (cell.accesoryView)
if (accessoryView == nil) {
UIView *cellContentView = nil;
for (UIView *accView in [cell subviews]) {
if ([accView isKindOfClass:[UIButton class]]) {
accessoryView = accView; // find generated accesoryView (UIButton)
break;
} else if ([accView isKindOfClass:NSClassFromString(@"UITableViewCellContentView")]) {
// find generated UITableViewCellContentView
cellContentView = accView;
}
}
// if the UIButton doesn't exists, find cell contet view (UITableViewCellContentView)
if (accessoryView == nil) {
accessoryView = cellContentView;
}
// if the cell contet view doesn't exists, use cell view
if (accessoryView == nil) {
accessoryView = cell;
}
}
[actionSheet showFromRect:accessoryView.bounds inView:accessoryView animated:YES];
Testés dans iOS 4.3 à 5,1
utiliser au mieux comme méthode personnalisée:
-(UIView*)getViewForSheetAndPopUp:(UITableViewCell*)cell;
et le code de la méthode:
-(UIView*)getViewForSheetAndPopUp:(UITableViewCell*)cell {
UIView *accessoryView = cell.accessoryView;
if (accessoryView == nil) {
UIView *cellContentView = nil;
for (UIView *accView in [cell subviews]) {
if ([accView isKindOfClass:[UIButton class]]) {
accessoryView = accView;
break;
} else if ([accView isKindOfClass:NSClassFromString(@"UITableViewCellContentView")]) {
cellContentView = accView;
}
}
if (accessoryView == nil) {
accessoryView = cellContentView;
}
if (accessoryView == nil) {
accessoryView = cell;
}
}
return accessoryView;
}
comment voulez-vous instancier myPopover? –