0

このようにロードしようとしましArrayたが、最初にロードArrayされ、他は表示されません。

    - (void)viewDidLoad {
    [super viewDidLoad];


    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [[documentPaths lastObject] stringByAppendingPathComponent:@"test.plist"];

    NSDictionary *myDict = [NSDictionary dictionaryWithContentsOfFile:path];



    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"blackKey"])
    {
        NSArray *black = [myDict objectForKey:@"Black"];
        self.tableData = [black copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"greenKey"])
    {
        NSArray *green = [myDict objectForKey:@"Green"];
        self.tableData = [green copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"purpleKey"])
    {
        NSArray *purple = [myDict objectForKey:@"Purple"];
        self.tableData = [purple copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"orangeKey"])
    {
    NSArray *orange = [myDict objectForKey:@"Orange"];
        self.tableData = [orange copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"blueKey"])
    {
        NSArray *blue = [myDict objectForKey:@"Blue"];
        self.tableData = [blue copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"redKey"])
    {
        NSArray *red = [myDict objectForKey:@"Red"];
        self.tableData = [red copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"darkblueKey"])
    {
        NSArray *darkblue = [myDict objectForKey:@"Darkblue"];
        self.tableData = [darkblue copy];
    }
    else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"yellowKey"])
    {
        NSArray *yellow = [myDict objectForKey:@"Yellow"];
        self.tableData = [yellow copy];
    }


    }
  1. 私は何を間違っていますか?

  2. また、配列のタイトルをセクションのタイトルとして表示したいのですが、どうすればよいですか?

  3. そして、セクション(私の配列)ごとの行を制限する方法はありますか?

編集

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [tableData count];
}



// Customize the appearance of table view cells.
- (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];
    }

    NSDictionary *dict = [tableData objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@ - %@", [dict objectForKey:@"Name"], [dict objectForKey:@"Address"]];

    return cell;
}

EDIT2

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    [sectionsTitle objectForKey:[sectionTitle objectAtIndex:indexPath.section]];
}

宣言されていない識別子'indexPath'の使用; 'NSIndexPath'のことですか?

4

1 に答える 1

1

それらをセクションに分割するので、tableDataは次のようになりNSMutableDictionary ます。また、このように辞書のキーの配列を保持する必要があります。

NSMutableDictionary *resultDic = [[NSMutableDictionary alloc] init];
NSMutableArray *resultArray = [[NSMutableArray alloc] init];
NSDictionary *myDict = [NSDictionary dictionaryWithContentsOfFile:path];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"blackKey"])
{
    NSArray *black = [myDict objectForKey:@"Black"];

    //Add the key here
    [resultArray addObject:@"Black"];
    //Add the key and value
    [resultDic setValue:black forKey:@"Black"];
}
else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"greenKey"])
{
    NSArray *green = [myDict objectForKey:@"Green"];

    //Add the key here
    [resultArray addObject:@"Green"];
    //Add the key and value
    [resultDic setValue:black forKey:@"Green"];
}
//Repeat for all the elements
....
//Then after you finished all the tests and additions

//Assign the result array to your tableData
self.tableData = resultDic;
self.sectionsTitle = resultArray;

現在、sectionsTitleおよびを使用しtableDataてテーブルに入力します。テーブル内の任意のセクションについて、タイトル[sectionsTitle objectAtIndex:sectionIndex]; を取得できます。セクション内のすべての要素を取得するには、次を使用します。[sectionsTitle objectForKey:[sectionTitle objectAtIndex:sectionIndex]];

于 2012-06-14T18:30:35.357 に答える