0

通知を受け取り、配列に値を設定するビュー コントローラーがあります。これは、テーブルビューに表示されます。問題は、テーブルビューに最後に追加されたオブジェクトしか表示されないことです。その後、新しいビューにプッシュして再び戻ってくると、配列全体がテーブルに表示されます。おそらく、viewDidLoad の後に receiveNotification メソッドが呼び出されていると思いますが、これは理にかなっています。[myTableView reloadData] を使用してデータをリロードしようとしました。うまくいきませんでした。セレクターと、遅延のあるセレクターも試しました。
誰かがこれを試して成功しましたか?もしそうなら、どうすればいいのか教えていただけますか? これを読んでくれてありがとう。

編集: - このコードがゴミでいっぱいであることはわかっています。最近アプリを大幅に変更しただけで、整理する前にこの最後のビットに取り組んでいます! :)

-(void)receiveNotification:(NSNotification *)notification
{


if (!path) {


    path = [[NSBundle mainBundle] pathForResource:@"OverallDictionary" ofType:@"plist"];
    theDictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
}

NSArray *temporaryArray = [theDictionary allKeys];

for (id key in temporaryArray) {
    if ([[notification name] isEqualToString:key]) {
        if (!allCompletedTopics) {
            allCompletedTopics = [[NSMutableArray alloc] init];
        }
        if (![allCompletedTopics containsObject:[[theDictionary valueForKey:key] valueForKey:@"Title"]]) {
            [allCompletedTopics addObject:[[theDictionary valueForKey:key] valueForKey:@"Title"]];
            defaults = [NSUserDefaults standardUserDefaults];
            [defaults setObject:allCompletedTopics forKey:@"hi"];
            theFinalScore++;
            [[NSUserDefaults standardUserDefaults] setInteger:theFinalScore forKey:@"theFinalScore"];
            [self updateTheProgressView];

        }
    }
}
NSLog(@"received %@", allCompletedTopics);
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTheTable" object:nil];


}


- (void)viewDidLoad
{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTable:) name:@"reloadTheTable" object:nil];

// Do any additional setup after loading the view.
allCompletedTopics = [[[NSUserDefaults standardUserDefaults] objectForKey:@"hi"] mutableCopy];

[defaults setObject:allCompletedTopics forKey:@"theKey"];

if (!path) {
    path = [[NSBundle mainBundle] pathForResource:@"OverallDictionary" ofType:@"plist"];
    theDictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
    //  NSLog(@"Created on view did load");
}

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"Keys" ofType:@"plist"];
NSArray *theKeys = [[NSArray alloc] initWithContentsOfFile:path1];

for (NSString *theString in theKeys) {
    //  NSLog(@"%@", theString);
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:theString object:nil];

}
theFinalScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"theFinalScore"];

[self updateTheProgressView];
NSLog(@"%@", allCompletedTopics);
//   [myTableView reloadData];


}



- (void)reloadTable:(NSNotification *)notification
{
[myTableView reloadData];
NSLog(@"hi");
}

-(void)createTheData {

if (!levelThree) {
    levelThree = [[NSMutableArray alloc] init];
}

levelThreeFinal = [[NSMutableArray alloc] initWithCapacity:48];


for (NSString *object in allCompletedTopics) {
    if (([object rangeOfString:@"level 3"].location != NSNotFound) && (![levelThree containsObject:object]))
    {
      //  NSLog(@"%@", object);

        [levelThree addObject:object];
        NSString *theTemp = [object substringToIndex:object.length - 8];
        [levelThreeFinal addObject:theTemp];


    }
    levelThreeDict = [NSDictionary dictionaryWithObject:levelThreeFinal forKey:@"Levels"];
        }


allLevels = [[NSMutableArray alloc] initWithObjects:levelThreeDict,
             //levelFourDict,
             //levelFiveDict,
             //levelSixDict,
             nil];

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[[allLevels objectAtIndex:section] objectForKey:@"Levels"] count]; //リターン 2; }

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return allLevels.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...


    //  cell.textLabel.text = [allCompletedTopics objectAtIndex:indexPath.row];

    NSDictionary *dictionary = [allLevels objectAtIndex:indexPath.section];
    NSArray *array = [dictionary objectForKey:@"Levels"];
    NSString *cellValue = [array objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    NSString *theTitle = [[NSString alloc] init];

    switch (section) {
        case 0:
            theTitle = @"Level 3";
            break;
        case 1:
            theTitle = @"Level 4";
            break;
        case 2:
            theTitle = @"Level 5";
            break;
        case 3:
            theTitle = @"Level 6";
            break;
        default:
            break;
    }
    //return theTitle;

    return @"Your progress so far!";
}
4

0 に答える 0