У меня есть пользовательский UITableViewCell, который я использую в своем TableView, но я хочу, чтобы между каждой ячейкой было расстояние. Информация, которая попадает в ячейку, захватывается из моей базы данных (я использую Parse), поэтому каждый раз она различна. Я нашел это большое решение SO здесь: Spacing between cells on UITableView with Custom UITableViewCellИнтервал/поля между ячейками в UITableView с пользовательским UITableViewCell
, но проблема после того, как я внедрил код из этого вопроса, заключается в том, что теперь мой табличный просмотр показывает только каждую другую ячейку, он пропускает информацию в моем массиве и не отображает ее.
Вот мой код:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row % 2 == 1)
return 40;
return 73;
//return 73;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {
//Begin
static NSString *CELL_ID2 = @"SOME_STUPID_ID2";
// even rows will be invisible
if (indexPath.row % 2 == 1)
{
UITableViewCell * cell2 = [tableView dequeueReusableCellWithIdentifier:CELL_ID2];
if (cell2 == nil)
{
cell2 = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CELL_ID2];
[cell2.contentView setAlpha:0];
[cell2 setUserInteractionEnabled:NO]; // prevent selection and other stuff
}
return cell2;
}
//End
static NSString *CellIdentifier = @"debateCell";
RipDebateTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"RipDebateTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
// Configure the cell
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//[df setLocale:enUSPOSIXLocale];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MMM dd, yyyy "];
NSString *my = [df stringFromDate:[object objectForKey:@"Date"]];
NSLog(@"%@", my);
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
cell.titleOf.text = [object objectForKey:@"Topic"];
cell.dateOf.text = [NSString stringWithFormat:@"Date: %@", my];
cell.typeOf.text = @"Debate";
cell.cellTop.image = [UIImage imageNamed:@"table-top"];
//cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
//cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
self.objects является массив, в котором информация из базы данных идет в. Как я могу сделать это так, что между ячейками все еще существует интервал, но никакая информация в массиве не пропущена?
EDIT: Вот код, который извлекает данные
- (PFQuery *)queryForTable {
PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
//query whereKey:@"school" equalTo:[PFUser curr]
[query whereKey:@"school" equalTo:[[PFUser currentUser]objectForKey:@"mySchool"]];
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
if ([self.objects count] == 0) {
//[query whereKey:@"providerZipCode" equalTo:[NSNumber numberWithInt:78664]];
NSLog(@"NONE");
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
[query orderByAscending:@"Date"];
return query;
}
Этот запрос добавляет объекты в self.objects, массив.
Если до сих пор неясно, вот ссылка на документы PARSE о контроллере представления: https://parse.com/docs/ios_guide#ui-tables/iOS
и хотите только нечетные строки хочет, чтобы заполнить данные, где, как эвены оставлены пустые .. –
справа, четные строки являются поля между нечетными строками, чтобы сделать его похожим на есть расстояние. Моя проблема в том, что мой код выше не отображает все в массиве объектов ... Каждый раз, когда вызывается cellForRowAtIndexPath, в метод отправляется PFObject, поэтому, когда это четная строка, этот объект игнорируется, и ничего не происходит с Это. – Jacob
этот метод вызывает один раз в строке, так как вы знаете, thats wy не хватает данных в tableview, ya, поскольку rdelmar сказал, что u может поместить пустой headerview для каждой строки. –