Замените это:
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);
Существует sectionLocation
метод UITableViewCell
, который возвращает целое число, говорящее о том, что вам нужно:
С 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
Это очень просто. предположим, клетка - это объект, положение которого нужно выяснить.
UITableView* table = (UITableView *)[cell superview];
NSIndexPath* pathOfTheCell = [table indexPathForCell:cell];
NSInteger sectionOfTheCell = [pathOfTheCell section];
NSInteger rowOfTheCell = [pathOfTheCell row];
Просто добавьте свойство в свой пользовательский класс UITableViewCell (в зависимости от реализации), которое содержит int, NSNumber или NSIndexPath, указывающее, какое оно есть. Если вместо этого вы используете структуру данных, то поместите ее в свой элемент в этой структуре данных. Затем вы просто устанавливаете свойство при создании структуры данных, что-то вроде elt.id = i, и затем вы получаете к нему доступ в cellForRowAtIndexPath, что-то вроде if (elt.id == 0 || elt.id == n-1 ) где n - количество строк в вашем разделе.
Возможно, я полностью пропустил ваш вопрос, но если бы я это сделал, просто прокомментируйте, и я опубликую еще раз.
Ячейки не знают, куда они идут ... В табличном представлении есть ячейки. Вы тот, кто сообщает табличному представлению, ЧТО находится в ячейке. Вы делаете это в источнике данных, в котором вы реализуете 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. Надеюсь, что это поможет
К сожалению, я не нашел решения этой проблемы и прибег к подклассу UITableViewController и UITableViewCell в универсальное решение, которое я могу расширить при необходимости. .
Вы не делаете этого в камере. Закругленные углы рисуются в [tableView viewForHeaderInSection] и viewForFooterInSection.
Я использую стиль Plain tableview, а затем использую эти два представления для округления, и ячейки являются нормальными, без округлений.
Если вам нужны более надежные и общие материалы, взгляните на http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html - Мэтт Галлахер довольно эффективно показывает, что вам нужно. Он в основном воссоздает UITableViewController из UIViewController, добавляя при этом возможность использовать вашу собственную графику. Я просто работаю над тем, чтобы применить это к одному из своих проектов, пока что, похоже, это сработает.
Не вдаваясь в подробности о том, кто что рисует, вы можете очень легко узнать, какая ячейка является последней в своем разделе внутри cellForRowAtIndexPath.
Вы переданы в indexPath нужной ячейки предоставить, правда? Вы также передали tableView.
call [tableView numberofRowsInSection: indexPath.section], и если он == ([indexPath.row] -1), вы знаете, что вас просят указать последнюю ячейку в этом разделе.
Во время вызова cellForRowAtIndexPath ячейка гарантированно находится на переданном indexPath.
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
}
Для решения этой проблемы можно использовать
- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell
. В моем примере я использую это для прокрутки ячейки (с настраиваемым содержимым) в верхнюю часть представления.