TableView не отображает данные после изменения View - PullRequest
0 голосов
/ 12 января 2012

У меня проблема. На данный момент я полирую свое приложение, отлаживаю его и так далее. Произошло что-то странное. Вот как это работает: пользователь вводит данные и попадает в TableView, и данные отображаются. Просто. Но как только он переключается на другое представление, а затем обратно на TableView, данные исчезают! Странно то, что этого раньше не было. (Я переделал некоторые строки кода, может быть, что-то изменил неосознанно). Я догадываюсь, что это может быть, но это было бы странно, потому что это работало раньше. Я думаю, что проблема заключается в строке buttonTag:

      - (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];
}

  // cell.image = selectedImage;
cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:14.0];

if (buttonTag == 9001) {    
cell.textLabel.text = [NSString stringWithFormat:@"%@  %@ %@,  %@.", [self.userData objectAtIndex:0], [self.userData objectAtIndex:1], [self.userData objectAtIndex:2], [self.userData objectAtIndex:3]];
    }
if (buttonTag == 9002) {    
    cell.textLabel.text = [NSString stringWithFormat:@"%@ %@ %@, %@.", [self.userData objectAtIndex:0], [self.userData objectAtIndex:1], [self.userData objectAtIndex:2], [self.userData objectAtIndex:3]];
}
if (buttonTag == 9003) {    
    cell.textLabel.text = [NSString stringWithFormat:@"%@  %@ %@,%@.", [self.userData objectAtIndex:0], [self.userData objectAtIndex:1], [self.userData objectAtIndex:2], [self.userData objectAtIndex:3]];
}


return cell;

}

Потому что он просто отображает данные при нажатии определенной кнопки. Если вы переключитесь на TableView, не нажимая одну из этих кнопок (например, на вкладке), он ничего не показывает. Теперь у меня вопрос: как я могу сказать TableView перевести данные с последней нажатой кнопки? (Я думал NSUserDefaults?)

Вот еще один ViewController, из которого вы попадаете в TableView:

  - (IBAction)savePressed:(id)sender

{
if (buttonTag == 9001) {
     button.tag = 9001;
NSUserDefaults *savetext = [NSUserDefaults standardUserDefaults];
[savetext setObject:Antwort.text forKey:@"hallo"];
[savetext setObject:Antwort2.text forKey:@"hallo2"];
[savetext setObject:Antwort3.text forKey:@"hallo3"];
UIButton *buttonPressed = (UIButton *)sender;
TV *second =[[TV alloc] initWithNibName:nil bundle:nil];
second.buttonTag  = buttonPressed.tag; 
    [self.navigationController pushViewController:second animated:YES];

}
if (buttonTag == 9002) {
     button.tag = 9002;
    NSUserDefaults *savetext = [NSUserDefaults standardUserDefaults];
    [savetext setObject:Antwort.text forKey:@"hallo"];
    [savetext setObject:Antwort2.text forKey:@"hallo2"];
    [savetext setObject:Antwort3.text forKey:@"hallo3"];
    UIButton *buttonPressed = (UIButton *)sender;
    TV *second =[[TV alloc] initWithNibName:nil bundle:nil];
    second.buttonTag  = buttonPressed.tag; 
  [self.navigationController pushViewController:second animated:YES];

}
if (buttonTag == 9003) {
    button.tag = 9003;
    NSUserDefaults *savetext = [NSUserDefaults standardUserDefaults];
    [savetext setObject:Antwort.text forKey:@"hallo"];
    [savetext setObject:Antwort2.text forKey:@"hallo2"];
    [savetext setObject:Antwort3.text forKey:@"hallo3"];
    UIButton *buttonPressed = (UIButton *)sender;
    TV *second =[[TV alloc] initWithNibName:nil bundle:nil];
    second.buttonTag  = buttonPressed.tag; 
[self.navigationController pushViewController:second animated:YES];

}

}

1 Ответ

1 голос
/ 13 января 2012

Если данные считываются и сохраняются в NSUSerDefaults, попробуйте

[savetext synchronize] 

, прежде чем перейти к новому виду.

...