0

我的另一个问题模棱两可,所以我会让这个问题更清楚。I have a table view on one viewController and when a cell is selected, it saves a number to NSUserDefaults. 在我的主视图控制器上,我检索了这个数字并想用它更新一个标签。我做了一些调试,发现当我从 tableView 回到我的主 viewController 时,发生的顺序是这样的:

1)主视图加载 2)tableView 单元格点击识别 3)保存到 NSUserDefaults 的数字

我将如何更改顺序以便主视图最后加载,以便当我单击一个单元格时,它会更改我的主视图控制器中的标签?

这是我的 didSelectRow 方法的代码

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
 NSString *pointsPath = [[NSString alloc] initWithFormat:@"totalPoints"];
 NSString *numberFirst = [[NSString alloc] initWithFormat:@"numberFirst"];

int totalPoints = [[NSUserDefaults standardUserDefaults] integerForKey: pointsPath];
int number = [[NSUserDefaults standardUserDefaults] integerForKey:numberFirst];

if([indexPath row] == 1)
{
    NSLog(@"Selected First row");
    if(totalPoints < 10)
    {
        if (number != 0)
        {
            NSLog(@"Did not add a point, but saved");
            [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst];
            [[NSUserDefaults standardUserDefaults] synchronize];

        }
        else if (number == 0)
        {
            NSLog(@"Added a Point");
            int newPoints = totalPoints + 1;
            [[NSUserDefaults standardUserDefaults] setInteger:newPoints forKey: pointsPath];
            [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst];
            [[NSUserDefaults standardUserDefaults] synchronize];
            int logPoints = [[NSUserDefaults standardUserDefaults]integerForKey:pointsPath];
            NSLog(@"Point Count:%i", logPoints);
        }


    }
4

2 回答 2

0

控制器的视图按需加载。所以触发的事情viewDidLoad是其他人在表演controller.view。如果您已经将视图控制器推送到容器视图中或以其他方式开始呈现它,那么这将是负责的代理。

viewDidLoad,以及在 iOS 5 及更低版本下viewDidUnload,如果您想以编程方式创建视图的某些部分,旨在为您提供所需的钩子。

如果您正在尝试考虑在控制器不可见时可能已更改的设置,您可能应该使用viewWillAppear:. 这是确定您何时将从不可见过渡到可见的预期方式。

如果你想在两件事之间建立一个完全活跃的链接,那么你可以设置视图控制器来显示要监听的数字,NSUserDefaultsDidChangeNotification并在发生这种情况时根据需要更新视图。

于 2013-08-21T20:27:52.413 回答
0

伙计们,如果有人有这个问题,我终于找到了问题......你需要确保当用户选择一个单元格时,它是一个推送序列而不是一个模态......这太令人沮丧了,太简单了!

于 2013-08-22T17:39:15.467 回答