2010-07-30 2 views
0

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

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

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

Документация на яблоки и другие поисковые запросы дали мне хорошую информацию, но чувствуют себя недостаточно всеобъемлющими, чтобы полностью «получить ее».

+0

Могут быть, один PLIST для списка каталогов с другим Plist только для деталей ? – TheHockeyGeek

ответ

1

Во-первых, если вы используете pLists в качестве источника, тогда они не останутся в каком-либо виде, ну, а не порядок там, в pList. Способ вокруг этого состоит в том, чтобы иметь массив в вашем 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; 
} 

Надеется, что это помогает

+0

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

+0

Если бы я был вами, я бы массив NSDictionarys внутри моего plist. Каждый словарь содержит массив для обоих телефонных номеров и адресов. Если вы просто поместите данные прямо в pList, даже если он отсортирован, он не будет считан в этом порядке. – octermircty