IBaction在不同的观点

时间:2013-02-19 12:47:59

标签: xcode views ibaction

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

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

有可能吗?在那种情况下,你能指点我正确的方向吗?

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

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

我是否可以通过视图4来执行上述操作以重置视图1中的计数器?

3 个答案:

答案 0 :(得分:0)

约翰,我怀疑你应该看看NSUserDefaults。如果这是你的第一份作业,那么你的老师会对此不以为然。

老实说,我认为上述习惯是习惯并绕过良好的MVC基础知识。由于您似乎对此不熟悉,因此您应该专注于良好的MVC基础知识:金字塔顶部的View控制器控制其视图。在这种情况下,你还有一个层,其中UITabBarController控制着一堆viewControllers(标签),这些ViewControllers控制它们的视图。

您可以使用UITabBarController的“viewControllers”属性在这些viewControllers(标签)之间移动。

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

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

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

此处没有代码快捷方式。学习适当的MVC,否则它会在以后咬你。

希望这有帮助

答案 1 :(得分:-1)

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

以简单的方式,当您在第四个视图中点击Refresh button时,release UITabbarController并再次添加。

否则需要在所有3个屏幕中调用刷新视图w.r.t UITbabarController Delegate方法。

答案 2 :(得分:-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];
       }
     }