У меня есть класс, который расширяет UITableviewController, который отображает тип данных с именем «GigData» (который пока содержит только строки).Содержимое хранится в «data», который представляет собой NSMutableArray, содержащий NSMutableArrays, содержащий «GigData».Этот массив передается экземпляру моего класса, а массивы внутри массивов составляют разделы таблицы.Вот код, который я реализовал до сих пор:
@synthesize data = _data;
- (id)init
{
self = [super initWithStyle:UITableViewStyleGrouped];
_data = [[NSMutableArray alloc] init];
[[self navigationItem] setTitle:@"Gigs by Date"];
return self;
}
- (id)initWithStyle:(UITableViewStyle)style
{
return [self init];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return [_data count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [[_data objectAtIndex:section] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
NSMutableArray *sectionArray = [_data objectAtIndex:[indexPath section]];
GigData *gig =[sectionArray objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[gig description]];
return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
GigData *temp = [[_data objectAtIndex:section] objectAtIndex:0];
return [temp date];
}
Когда я запускаю приложение, я вижу, что все отсортировано по нужным группам, и все изображения отображаются правильно, кроме последнего раздела, который постоянно меняется.имена, некоторые из которых включают "cs.lproj", "заголовки" и "метод не разрешен".Прокрутка к нижней части таблицы, затем к вершине приводит к сбою приложения.Кроме того, если я предоставлю свою собственную реализацию для описания «GigData», приложение вылетает еще хуже, я вообще не могу перейти ко второму разделу.Данные объявляются как свойство в заголовочном файле и устанавливаются как неатомарные и сохраняются.Я также пытался использовать код внутри метода init для создания массива данных внутри этого класса, но это не имеет значения.В некоторых приложениях приложения сказано, что в tableView есть проблема: cellForRowAtIndexPath: когда я создаю «sectionArray».Кто-нибудь получил какие-либо предложения относительно того, что я делаю неправильно?