Заполнение двух сгруппированных табличных представлений из одного и того же списка - PullRequest
0 голосов
/ 30 июля 2010

В моем приложении есть часть, которая содержит каталог статических контактов. Я хотел бы, чтобы каталог отображался в индексном порядке (в алфавитном порядке), а также необходимо сгруппировать подробный вид. (Я несколько пытаюсь воспроизвести внешний вид приложения «Контакты».) У меня оно работает, просто нет индекса и страницы с подробностями, которая представляет собой просто представление с набором кнопок.

По какой-то причине я не могу получить момент а-ха при работе с табличным представлением.

У кого-нибудь есть примеры того, как я могу это сделать? Более того, какая книга лучше всего показывает, как работать с UITableViews (особенно при их группировании) с использованием PLIST в качестве источника?

Документация по яблокам и другие поиски дали мне некоторую полезную информацию, но она кажется далеко не исчерпывающей, чтобы полностью ее "получить".

1 Ответ

1 голос
/ 30 июля 2010

Прежде всего, если вы используете pLists в качестве источника, то они не будут оставаться в любом порядке, ну, во всяком случае, не в порядке, указанном в pList. Чтобы обойти это, в массиве pList должен быть массив, содержащий ваши элементы. Для нас данные из списка вы можете сделать что-то вроде этого, если ваш список заполнен NSDictionarys:

NSDictionary* dict = [NSDictionary initwithContentsOfFile:@"ApList.plist"];
//Get all of the elements in the dictionary
NSArray *array = [dict allKeys};
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [array count];
}    

- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier;

MyIdentifier = @"Cell";

UITableViewCell *cell = (UITableViewCell *)[table dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}
//Create a new dict based of the indexpath of the table cell, we need the array otherwise we wouldnt be able to get the key value for the dict.
    NSDictionary* currentDict = [NSDictionary valueForKey:[array objectAtIndex:indexPath.row]];
//Then once you;ve got the dict create a string from a String held in that dict, in this case the key for the String is LABEL.
NSString *title = [currentDict valueForKey:@"LABEL"];
    cell.textLabel.text = title;

return cell;
}

Надеюсь, это поможет

...