【问题标题】:How to save settings of NavigationBar's barTintColor for all of view controller when using NSUserDefaults使用 NSUserDefaults 时如何为所有视图控制器保存 NavigationBar 的 barTintColor 设置
【发布时间】:2014-05-23 09:01:09
【问题描述】:

我是 Objective-C 的初学者,而且英语不是我的母语,所以如果我的句子乱七八糟,我很抱歉。

我有两个视图控制器,都是tableViewController:
- 视图控制器 A 是我的主视图控制器。
- 视图控制器 B 能够选择 NavigationBar's barTintColor 的颜色,所以如果我选择第 0 行,它会使 barTintColor 变为红色 A 和 B。

我放了 5 种不同类型的颜色,这意味着我有 5 行可供选择颜色。 如果我这次选择了红色并让应用终止,然后重新启动应用,即使我不再选择红色,我如何才能显示红色?

我知道我可以使用NSUserDefaults 保存设置。
所以,在我的视图控制器 B 中,我做到了:

-(void)tableView:(UITableView *)tableView
       didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[NSUserDefaults standardUserDefaults]setInteger:indexPath.row forKey:@"ChosenColor"];

}

但是,我要保存设置和加载设置的位置是不同的视图控制器,所以我不知道如何加载它。

我该如何解决这个问题??

【问题讨论】:

  • 希望我的回答能帮到你。

标签: ios uitableview uinavigationbar settings nsuserdefaults


【解决方案1】:

我假设你有一个 NSArray 来知道 TableView 中每一行的颜色。

然后您可以将颜色保存在NSUserDefaults 中,而不是整数。

-(void)tableView:(UITableView *)tableView
   didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0)
    {
        [[NSUserDefaults standardUserDefaults] setObject:[UIColor redColor] forKey:@"ChosenColor"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
}

然后,当您重新打开应用程序时,您可以在viewDidAppear: 中检索此数据:

- (void) viewDidAppear:(BOOL)animated
{
    UIColor *color = [[NSUserDefaults standardUserDefaults] objectForKey:@"ChosenColor"];
    [yourObject setColor:color];
}

但是,因为您正在尝试为整个应用程序做一些事情。您可以在 AppDelegate.m 中进行。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Usually your UINavigationController will be your rootViewController
    UIColor *color = [[NSUserDefaults standardUserDefaults] objectForKey:@"ChosenColor"];
    UINavigationController * navigationController =(UINavigationController *)self.window.rootViewController;
    [navigationController.navigationBar setBarTintColor:color];
}

如果您想在一个 ViewController 中选择一种颜色并返回到您的主 ViewController 并设置所选颜色,您也应该使用 Delegate。如果您不了解委托,请查看以下链接:

【讨论】:

  • 非常感谢您的建议。我非常感谢你的帮助。非常感谢你,加布里埃尔!!
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多