[英]UItableView data from Plist
我有成千上萬陣列的一個的plist成it.and每個陣列包含字典與it.thats 51項表示總一些40000的數據,我已填充入UITableView
.IF我進入大約10正確Array
到UITableView
..its以良好的視圖顯示行...但是當我超過40個數組時.. UITableView
變得很奇怪。您甚至無法理解。 。 。
UITableView
在下面。
。
我還嘗試過為每個部分擴展行。這對我也不起作用..我該怎么辦?
編輯代碼
-(void)ViewDidLoad
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"sam" ofType:@"plist"];
//Load the file in a dictionnary
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
self.myData = dict;
//SORTING THE DICTIONARY
NSArray *dicoArray = [[self.myData allKeys] sortedArrayUsingComparator:^(id firstObject, id secondObject) {
return [((NSString *)firstObject) compare:((NSString *)secondObject) options: NSCaseInsensitiveSearch];
}];
self.mySections = dicoArray;
NSLog(@"path values%@",tableDict);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [self.mySections count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([self tableView:tableView canCollapseSection:section])
{
if ([expandedSections containsIndex:section])
{
NSString *key = [self.mySections objectAtIndex:section];
NSArray *dataInSection = [[self.myData objectForKey:key] objectAtIndex:0];
return [dataInSection count];
}
return 1;
}
return 1;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *key = [self.mySections objectAtIndex:section];
return [NSString stringWithFormat:@"%@", key];
}
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return self.mySections;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *key = [self.mySections objectAtIndex:section];
NSDictionary *dataForSection = [[self.myData objectForKey:key] objectAtIndex:0];
NSArray *array=dataForSection.allKeys;
cell.textLabel.text = [[dataForSection allKeys] objectAtIndex:row];
cell.detailTextLabel.text=[dataForSection valueForKey:[array objectAtIndex:indexPath.row]];
return cell;
}
這段代碼可以正常工作如果我少用Array,說10Array帶有51個值...但是當我多用...時,屏幕顯示如下
編輯
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BUTTER,WITH SALT</key>
<array>
<dict>
<key>Alpha_Carot_(µg)</key>
<string>0</string>
<key>Ash_(g)</key>
<string>2.11</string>
<key>Beta_Carot_(µg)</key>
<string>158</string>
<key>Beta_Crypt_(µg)</key>
<string>0</string>
<key>Calcium_(mg)</key>
<string>24</string>
<key>Carbohydrt_(g)</key>
<string>0.06</string>
<key>Cholestrl_(mg)</key>
<string>215</string>
<key>Choline_Tot_ (mg)</key>
<string>18.8</string>
<key>Copper_mg)</key>
<string>0</string>
<key>Energ_Kcal</key>
<string>717</string>
<key>FA_Mono_(g)</key>
<string>21.021</string>
<key>FA_Poly_(g)</key>
<string>3.043</string>
<key>FA_Sat_(g)</key>
<string>51.368</string>
<key>Fiber_TD_(g)</key>
<string>0</string>
<key>Folate_DFE_(µg)</key>
<string>3</string>
<key>Folate_Tot_(µg)</key>
<string>3</string>
<key>Folic_Acid_(µg)</key>
<string>0</string>
<key>Food_Folate_(µg)</key>
<string>3</string>
<key>GmWt_1</key>
<string>227</string>
<key>GmWt_2</key>
<string>14.2</string>
<key>GmWt_Desc1</key>
<string>1 cup</string>
<key>GmWt_Desc2</key>
<string>1 tbsp</string>
<key>Iron_(mg)</key>
<string>0.02</string>
<key>Lipid_Tot_(g)</key>
<string>81.11</string>
<key>Lut+Zea_ (µg)</key>
<string>0</string>
<key>Lycopene_(µg)</key>
<string>0</string>
<key>Magnesium_(mg)</key>
<string>2</string>
<key>Manganese_(mg)</key>
<string>0</string>
<key>Niacin_(mg)</key>
<string>0.042</string>
<key>Panto_Acid_mg)</key>
<string>0.11</string>
<key>Phosphorus_(mg)</key>
<string>24</string>
<key>Potassium_(mg)</key>
<string>24</string>
<key>Protein_(g)</key>
<string>0.85</string>
<key>Refuse_Pct</key>
<string>0</string>
<key>Retinol_(µg)</key>
<string>671</string>
<key>Riboflavin_(mg)</key>
<string>0.034</string>
<key>Selenium_(µg)</key>
<string>1</string>
<key>Sodium_(mg)</key>
<string>714</string>
<key>Sugar_Tot_(g)</key>
<string>0.06</string>
</dict>
</array>
<key>BUTTER,WHIPPED,WITH SALT</key>
<array>
<dict>
<key>Alpha_Carot_(µg)</key>
<string>0</string>
<key>Ash_(g)</key>
<string>2.11</string>
<key>Beta_Carot_(µg)</key>
<string>158</string>
<key>Beta_Crypt_(µg)</key>
<string>0</string>
<key>Calcium_(mg)</key>
<string>24</string>
<key>Carbohydrt_(g)</key>
<string>0.06</string>
<key>Cholestrl_(mg)</key>
<string>219</string>
<key>Choline_Tot_ (mg)</key>
<string>18.8</string>
<key>Copper_mg)</key>
<string>0.016</string>
<key>Energ_Kcal</key>
<string>717</string>
<key>FA_Mono_(g)</key>
<string>23.426</string>
<key>FA_Poly_(g)</key>
<string>3.012</string>
<key>FA_Sat_(g)</key>
<string>50.489</string>
<key>Fiber_TD_(g)</key>
<string>0</string>
</dict></array>
</dict></plist>
我現在看到了問題所在。 您選擇的索引太大了。
您可以通過刪除sectionIndexTitlesForTableView方法來刪除它。
如果確實要這樣做,則可以將所有字符串設置為不超過幾個字符的格式,例如:
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *shorterArray = [[NSMutableArray alloc]init];
for( NSString *sectionTitle in self.mySections ){
NSString *shortSectionTitle;
if( sectionTitle.length > 4 ){
shortSectionTitle = [NSString stringWithFormat:@"%@..", [sectionTitle substringToIndex:4]];
} else {
shortSectionTitle = sectionTitle;
}
[shorterArray addObject:shortSectionTitle];
}
return shorterArray;
}
如果您需要更多幫助,請告訴我
NSDictionary *dataForSection = [self.mySections objectAtIndex:section];
NSArray *array=dataForSection.allKeys;
cell.textLabel.text = [array objectAtIndex:row];
cell.detailTextLabel.text=[dataForSection objectForKey:[array objectAtIndex:row]];
嘗試刪除if(cell == nil){}條件。 即聲明,cell = [[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 redirectIdentifier:CellIdentifier] autorelease]; 如果在括號之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.