0

我正在学习用 xcode 为 iphone 创建应用程序。我已经这样做了大约 2-3 周,所以我对此完全陌生。现在我决定制作一个包含不同类型计数器的计数器,每个计数器都有自己的视图。它们之间的导航是通过标签栏完成的。

我有 4 个视图,最后一个视图应该包含其他 3 个视图中每个计数器的重置按钮。

是否可以?在那种情况下,你能指出我正确的方向吗?

现在我正在使用它从同一视图中重置计数器

-(IBAction)Reset:(id)sender{
    counter = 0;
    count.text = [NSString stringWithFormat:@"%i", counter]; 

我可以从假设视图 4 执行上述操作以重置视图 1 中的计数器吗?

4

3 回答 3

0

约翰,我怀疑你应该看看 NSUserDefaults。如果这是你的第一个作业,你的老师会对此皱眉。

老实说,我认为上述内容是一个习惯和绕过良好 MVC 基础的坏习惯。由于您对此似乎很陌生,因此您应该专注于良好的 MVC 基础知识:金字塔顶部的视图控制器控制其视图。在这种情况下,您还有一个层,其中 UITabBarController 控制一堆视图控制器(选项卡),这些视图控制器控制它们的视图。

您可以使用 UITabBarController 的“viewControllers”属性在这些视图控制器(选项卡)之间移动。

这些 viewController 中的每一个(UIViewController 子类)都应该在 IB 和代码中创建,然后附加到 UITabBarController。然后,您应该将 IB 身份检查器中的这些视图控制器的类更改为您相应的 UIViewController 子类名称。

然后将标签和操作添加到适当的视图控制器,并将它们挂钩到代码中相应的视图控制器。

您可以使用 viewController 4 中的 [self.tabBarController.viewControllers objectAtIndex:1] 来重置视图 1 上的计数器。

这里没有代码快捷方式。学习正确的 MVC,否则它会咬你。

希望这可以帮助

于 2013-02-19T13:50:42.467 回答
-1

是的,有可能。但是你的问题不是那么清楚。根据我的理解,第四个视图有一个名为刷新的按钮,当我们单击按钮时,剩余的 3 个视图应该被替换为开始的内容。

Refresh button通过简单的方式,当您在第四个视图中单击时releaseUITabbarController再次添加。

否则需要在所有 3 个屏幕 wrtUITbabarController Delegate方法中调用 Refresh View。

于 2013-02-19T12:54:48.353 回答
-1
    - (void)refresh
    {
   NSLog(@"Refresh Data");
   [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"data_refresh"];
   [[NSUserDefaults standardUserDefaults] synchronize];
   }

//在所有3个视图中添加此方法

   - (void)viewWillAppear:(BOOL)animated
      {
       [super viewWillAppear:animated];

           if ([[NSUserDefaults standardUserDefaults] objectForKey:@"data_refresh"] && [[[NSUserDefaults standardUserDefaults] objectForKey:@"data_refresh"] boolValue]) {
            count.text = @"0"; // Here you can modify the data as you expected.
         [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"data_refresh"];
         [[NSUserDefaults standardUserDefaults] synchronize];
       }
     }
于 2013-02-19T13:29:30.710 回答