视图更改后TableView不显示数据

发布于 2024-12-26 14:40:02 字数 3226 浏览 3 评论 0原文

我有一个问题。目前我正在完善我的应用程序并对其进行调试等等。奇怪的事情发生了。它的工作原理如下:用户输入数据并访问 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];

}

}

I have a problem. At the moment I'm polishing my app and debug it and so on. Something weird happened. Here is how it works: User enters data and gets to the TableView and the data gets displayed. Simple. But as soon as he switches to another view and then back to the TableView, the data is gone! The weird thing is that it didnt happen before. (I redid some codelines, maybe I changed something unknowingly). I have a hinch what it might be, but it would be weird because it worked before. The problem I think lies at the buttonTag line:

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

}

Because he just displays the data when a particular button is pressed. If you change to the TableView without pressing one of those buttons (From a Tabbar e.g.) it doesnt show anything. My question is now: How can I tell the TableView to maintan the data from the last button pressed? (I was thinking NSUserDefaults?)

Here is another ViewController, the one from where you get to the 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];

}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

楠木可依 2025-01-02 14:40:02

如果数据被读取&保存在 NSUSerDefaults 中,

[savetext synchronize] 

在推送到新视图之前尝试。

If the data is read & saved in NSUSerDefaults, try

[savetext synchronize] 

before pushing to new view.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文