Получить позицию ячейки в UITableview - PullRequest
36 голосов
/ 08 июля 2011

Я пытаюсь получить положение ячейки в табличном представлении.из этого кода я получаю позицию ячейки

int numberOfSections = [UITableView numberOfSections];
int numberOfRows = 0;
NSIndexPath *tempIndexPath = nil;
UITableViewCell *tempCell = nil;
for(int i=0;i<numberOfSections;i++)
{
     numberOfRows = [UITableView numberOfRowsInSection:i];
     for(int j=0;j<numberOfRows;j++
     {
           tempIndexPath = [NSIndexPath indexPathForRow:j inSection:i];
           tempCell = [UITableView cellForRowAtIndexPath:tempIndexPath];
           NSLog("Y postion for cell at (Row = %d,Section = %d) is :%f",tempCell.frame.origin.y);
     }  
}

, она вычисляет оси Y ячейки в табличном представлении, но моя проблема в том, что я хочу получить положение ячейки в видимой области прямоугольника табличного представления.т.е. если табличное представление имеет размер cgrectmake (0,0,200,500) и высота ячейки составляет 100 пикселей.так что tableview покажет 5 строк.если я прокручиваю вниз и выбираю 7-ю строку.я получу его оси Y 700. но ячейка будет в пределах (0,0,200,500) кадра.Как я могу получить местоположение ячейки в этом кадре (0,0,200,500).

Ответы [ 3 ]

195 голосов
/ 19 сентября 2012

Чтобы получить положение UITableViewCell относительно вида, в котором он расположен (например, относительно видимой области):


Swift 3, Swift 4:

let rectOfCellInTableView = tableView.rectForRow(at: indexPath)
let rectOfCellInSuperview = tableView.convert(rectOfCellInTableView, to: tableView.superview)

print("Y of Cell is: \(rectOfCellInSuperview.origin.y)")

1011 *
*

Objective-C:

CGRect rectOfCellInTableView = [tableView rectForRowAtIndexPath: indexPath];
CGRect rectOfCellInSuperview = [tableView convertRect: rectOfCellInTableView toView: tableView.superview];

NSLog(@"Y of Cell is: %f", rectOfCellInSuperview.origin.y);


Swift 2:

let rectOfCellInTableView = tableView.rectForRowAtIndexPath(indexPath)
let rectOfCellInSuperview = tableView.convertRect(rectOfCellInTableView, toView: tableView.superview)

print("Y of Cell is: \(rectOfCellInSuperview.origin.y)")
11 голосов
/ 08 июля 2011

ПРИМЕЧАНИЕ : Надеюсь, вопрос, возможно, снова обновился, используйте другие ответы, которые могут быть применимы к вам.

Вы можете использовать метод visibleCells, который будет возвращать видимые в данный момент ячейки в вашем табличном представлении:

NSArray *visibleCellsList=[tableview visibleCells];

for (UITableViewCell* currentCell in visibleCellsList) {

    NSLog(@"cell : %@ \n\n",currentCell.textLabel.text);

}
0 голосов
/ 08 июля 2011

Я сделал это так:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

Это было все, что мне нужно было сделать, чем я мог все cell.frame, cell.bounds и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...