2013-09-12 2 views
0

Я использую tableview, который использует динамические разделы, у меня есть sectionArray, который состоит из заголовка раздела и другого массива, который имеет все данные для всех разделов, Я не мог понять, как писать ячейку для строки для каждой секции, как это динамическаяUITableView Динамический раздел

код:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [appDelegate.sectionArray count]; 
} 

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    return [appDelegate.appNameArray count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    UILabel *AppNameLabel=[[UILabel alloc]initWithFrame:CGRectMake(80, 0, 120, 30)]; 
    [AppNameLabel setBackgroundColor:[UIColor clearColor]]; 
    [AppNameLabel setText:[NSString stringWithFormat:@"%@",[appDelegate.appNameArray objectAtIndex:indexPath.row]]]; 
    [AppNameLabel setFont:[UIFont systemFontOfSize:14]]; 
    [cell.contentView addSubview:AppNameLabel]; 
    return cell; 
} 

в APPNAME массиве у меня есть данные, состоящие по всем разделам, мне нужно отделить для конкретного участка, как это сделать в камере строка index pls help.

Заранее спасибо.

ответ

0

Во-первых, ваш метод numberOfRowsInSection должен выглядеть примерно так:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSArray *arrayForSection = appDelegate.sectionArray[section]; 
    return [arrayForSection count]; 
} 

После этого изменения cellForRow метод:

NSArray *arrayForSection = appDelegate.sectionArray[indexPath.section] 
[AppNameLabel setText:[NSString stringWithFormat:@"%@",[arrayForSection objectAtIndex:indexPath.row]]]; 
+0

Как это будет происходить в соответствии с разделами? я имею в виду, я получаю секцию массива как мои даты (12 сентября), а в appnamearray содержит 2013-09-12 13:07:03 Appname, 2013-09-11 13:07:03 Appname, 2013-09-10 13:07 : 03 Appname и т. Д .... как он будет присваиваться в соответствии с именами разделов? – KSR

+0

Ну, вам нужно будет работать над тем, как вы используете структуры данных. У вас должен быть один основной массив (для разделов), и он будет заполнен другими массивами - по одному для каждого раздела, содержащим информацию для строк в этом разделе. –

0

Вам необходимо обновить источник данных соответственно. Просто измените свой массив динамически, перечислив свой массив. Как если бы вы добавили раздел, вы должны динамически добавлять детали раздела в свой массив.

NSArray *tempArray = [NSArray alloc] initWithArray:sectionArray]; 
for(int i = index; i<= (sectionArray.count-i-1); i++) 
{ 
    if(i = index){ 
     [sectionArray replaceObjectAtIndex:i withObject:newSection] 
    } 
    else 
    { 
    sectionArray replaceObjectAtIndex:i withObject:[tempArray objectAtIndex: i-1]; 
    } 
} 
+0

wre sholud Я реализую это в своей ячейке для строки или количества разделов? – KSR

+1

Я только что дал вам эту идею .. этот код обновит ваш разделArray, и если вы хотите отличить строки от другого раздела, вы должны создать массив словарей с именами разделов, а затем отдельный словарь, содержащий массив каждого раздела. –

+0

Надеюсь, ваша проблема решена. –

2

Нет необходимости создавать два различных array для sectionTitle и APPNAME. Создать источник NSArray с NSDictionary объектов. Объект NSDictionary содержит массив appName как values и sectionTitle как key.

sourceArray 
(
dictionaryObject1 
{ 
key : sectionTitle, 
value : (appName1,appName2,appName3) 
}, 
dictionaryObject2 
{ 
key : sectionTitle, 
value : (appName1,appName2,appName3) 
}, 
. 
. 
. 
) 
+0

Спасибо! Хорошее решение! –

Смежные вопросы