tableView didSelectRow无法正常运行

时间:2013-08-19 22:46:01

标签: iphone ios objective-c

我的另一个问题含糊不清,所以我会更清楚地说明这一点。我在一个viewController上有一个表视图,当选择一个单元格时,它会向NSUserDefaults保存一个数字。在我的主viewController上,我检索这个数字,并希望用它更新标签。我做了一些调试,发现当我从tableView返回到我的主viewController时,这就是发生的事情的顺序:

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

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

这是我的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);
        }


    }

2 个答案:

答案 0 :(得分:0)

按需加载控制器的视图。因此触发viewDidLoad的事情是执行controller.view的其他人。如果您已经将视图控制器推入容器视图或以其他方式开始呈现它,那么那将是负责的代理。

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

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

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

答案 1 :(得分:0)

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