ios - que veut dire periode en cours sur iphone




indexPathForCell renvoie zéro depuis ios7 (2)

mon application fonctionnait bien sous ios6.1. essayé le simulateur ios7 et la partie suivante ne fonctionne pas:

EditingCell *cell = (EditingCell*) [[textField superview] superview];
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSLog(@"the section is %d and row is %d", indexPath.section, indexPath.row);
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *rowKey = [[keysForRows objectAtIndex: section] objectAtIndex: row];

Cela vient toujours:

the section is 0 and row is 0

bien qu'une autre section / rangée ait été sélectionnée. Quelqu'un a une idée pourquoi cela ne fonctionne pas sous ios7?


En expérimentant ce problème dans iOS 11, mais pas dans 9 ou 10, j'ai dépassé le func indexPath(for cell: UITableViewCell) -> IndexPath? méthode en utilisant la technique que @ drexel-sharp détaillée précédemment:

override func indexPath(for cell: UITableViewCell) -> IndexPath? {
    var indexPath = super.indexPath(for: cell)
    if indexPath == nil { // TODO: iOS 11 Bug?
        let point = cell.convert(CGPoint.zero, to: self)
        indexPath = indexPathForRow(at: point)
    }
    return indexPath
}

Je trouvais des cellules de la même façon que vous étiez. Maintenant, j'utilise cette méthode rapide si j'ai un bouton dans une cellule et que je connais la table dans laquelle je suis. Cela retournera la tableviewcell.

-(UITableViewCell*)GetCellFromTableView:(UITableView*)tableView Sender:(id)sender {
    CGPoint pos = [sender convertPoint:CGPointZero toView:tableView];
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:pos];
    return [tableView cellForRowAtIndexPath:indexPath];
}




ios7