Как UITableViewCell может знать собственный indexPath?

Замените это:

document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML + this.responseText;

следующим:

var iframe = document.createElement('iframe');
iframe.srcdoc = this.responseText;
iframe.src = "data:text/html;charset=utf-8," + escape(this.responseText);
document.body.appendChild(iframe);

Альтернативно, если вы просто хотите отобразить страницу в iFrame без запроса XHR. Просто используйте это как свой код:

var iframe = document.createElement('iframe');
iframe.src = 'http://derrick.dk/ogmobi/facebook/contentLockerFacebook.php';
document.body.appendChild(iframe);
26
задан Nosredna 28 July 2009 в 15:47
поделиться

10 ответов

Существует sectionLocation метод UITableViewCell, который возвращает целое число, говорящее о том, что вам нужно:

  • 1 - средняя ячейка
  • 2 - верхняя ячейка
  • 3 - нижняя ячейка
  • 4 - одиночная ячейка

С 2010 года у меня не возникало проблем с ее использованием в нескольких производственных приложениях.

UPDATE: один из наших двоичных файлов был автоматически отклонен недавно (в конце 2018 года), потому что мы использовали свойство "sectionLocation", так что это уже не лучший вариант.

Добавьте что-нибудь подобное в заголовочные файлы и вы можете использовать:

typedef NS_ENUM(NSInteger, MMMTableViewCellLocation) {

    MMMTableViewCellLocationUndefined = 0,
    MMMTableViewCellLocationMiddle = 1,
    MMMTableViewCellLocationTop = 2,
    MMMTableViewCellLocationBottom = 3,
    MMMTableViewCellLocationSingle = 4
};

@interface UITableViewCell ()

/** Undocumented method of UITableViewCell which allows to know where within section the cell is located,
 * so the cell can draw its borders properly. */
- (MMMTableViewCellLocation)sectionLocation;

/** Override this one to know when the value of sectionLocation changes. */
- (void)setSectionLocation:(MMMTableViewCellLocation)sectionLocation animated:(BOOL)animated;

@end
8
ответ дан 28 November 2019 в 06:05
поделиться

Это очень просто. предположим, клетка - это объект, положение которого нужно выяснить.

  UITableView* table = (UITableView *)[cell superview]; 
  NSIndexPath* pathOfTheCell = [table indexPathForCell:cell]; 
  NSInteger sectionOfTheCell = [pathOfTheCell section]; 
  NSInteger rowOfTheCell = [pathOfTheCell row];
32
ответ дан DShah 15 October 2019 в 06:53
поделиться

Просто добавьте свойство в свой пользовательский класс UITableViewCell (в зависимости от реализации), которое содержит int, NSNumber или NSIndexPath, указывающее, какое оно есть. Если вместо этого вы используете структуру данных, то поместите ее в свой элемент в этой структуре данных. Затем вы просто устанавливаете свойство при создании структуры данных, что-то вроде elt.id = i, и затем вы получаете к нему доступ в cellForRowAtIndexPath, что-то вроде if (elt.id == 0 || elt.id == n-1 ) где n - количество строк в вашем разделе.

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

-2
ответ дан TahoeWolverine 15 October 2019 в 06:53
поделиться

Ячейки не знают, куда они идут ... В табличном представлении есть ячейки. Вы тот, кто сообщает табличному представлению, ЧТО находится в ячейке. Вы делаете это в источнике данных, в котором вы реализуете cellForRowAtIndexPath ... Как это работает:

Путь индекса имеет строку и раздел

Для представления сгруппированной таблицы

Раздел относится к группе, а строка относится к 1 записи в этом разделе, способ, которым UITableView знает, сколько строк находится в разделе и сколько разделов, - это методы источника данных numberOfSectionInTableView и метод numberOfRowsInSection, это сделает правильные вызовы cellForRowAtIndexPath, вам решать, какой раздел и строка запрашиваются и вам необходимо построить свою ячейку в соответствии с этими спецификациями.

Хороший способ сделать это - у вас может быть Словарь с ключами имен разделов и значениями NSArray со значениями, которые входят в этот раздел.

Таким образом, ваша реализация для numberOfSectionsInRows будет выглядеть как

return [[dictionary allKeys] count]

И внедрение of numberOfRowsInSection будет выглядеть как

NSString* key=[[dictionary allKeys] objectAtIndex:sectionNumber]
  return [[dictionary objectForKey:key] count]

. Вы всегда можете обратиться к руководству по программированию UITableView по адресу http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/TableView_iPhone/Introduction/Introduction. Надеюсь, что это поможет

-1
ответ дан 28 November 2019 в 06:05
поделиться

К сожалению, я не нашел решения этой проблемы и прибег к подклассу UITableViewController и UITableViewCell в универсальное решение, которое я могу расширить при необходимости. .

0
ответ дан 28 November 2019 в 06:05
поделиться

Вы не делаете этого в камере. Закругленные углы рисуются в [tableView viewForHeaderInSection] и viewForFooterInSection.

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

0
ответ дан 28 November 2019 в 06:05
поделиться

Если вам нужны более надежные и общие материалы, взгляните на http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html - Мэтт Галлахер довольно эффективно показывает, что вам нужно. Он в основном воссоздает UITableViewController из UIViewController, добавляя при этом возможность использовать вашу собственную графику. Я просто работаю над тем, чтобы применить это к одному из своих проектов, пока что, похоже, это сработает.

1
ответ дан 28 November 2019 в 06:05
поделиться

Не вдаваясь в подробности о том, кто что рисует, вы можете очень легко узнать, какая ячейка является последней в своем разделе внутри cellForRowAtIndexPath.

Вы переданы в indexPath нужной ячейки предоставить, правда? Вы также передали tableView.

call [tableView numberofRowsInSection: indexPath.section], и если он == ([indexPath.row] -1), вы знаете, что вас просят указать последнюю ячейку в этом разделе.

Во время вызова cellForRowAtIndexPath ячейка гарантированно находится на переданном indexPath.

0
ответ дан 28 November 2019 в 06:05
поделиться
NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell: self];
int rows = [(UITableView *)self.superview numberOfRowsInSection:indexPath.section];

if (indexPath.row == 0 && rows == 1) {
// the one and only cell in the section
}
else if (indexPath.row == 0) {
//top
}
else if (indexPath.row != rows - 1) {
//middle
}
else {
//bottom
}
61
ответ дан 28 November 2019 в 06:05
поделиться

Для решения этой проблемы можно использовать

- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell

. В моем примере я использую это для прокрутки ячейки (с настраиваемым содержимым) в верхнюю часть представления.

4
ответ дан 28 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: