如何从滑块操作中刷新其他视图控制器

时间:2013-05-22 20:09:43

标签: ios uitableview uitabbarcontroller mkmapview refresh

我有一个UITabBar控制器有三个视图控制器。我正在尝试刷新我的两个视图控制器,它们是地图视图控制器和tableview控制器;从第三视图控制器与幻灯片的动作。在这里我尝试过:

- (IBAction)actionMySlider:(id)sender{
    NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
    NSString *numberString = [numberFormatter stringFromNumber: [NSNumber numberWithInteger: mySlider.value]];
    MetreLabel.text = [NSString stringWithFormat:@"Yarı Çap(Re): %@(m)",numberString];
   [(AppDelegate *)[[UIApplication sharedApplication] delegate] setVariable:[NSString stringWithFormat:@"%f",mySlider.value]];


   ViewController1 *VC1=[[ViewController1 alloc]init];
    [VC1 viewDidLoad];
    ViewController2 *VC2 = [[ViewController1 alloc]init];
    [VC2 viewDidLoad];

}

感谢您的回答。

修改 根据答案,我的方法是在我的TabBar.m上实现for循环。但是我在实施这个问题时遇到了一些问题。

for (UIViewController *v in self.tabBar.viewControllers)
{
     UIViewController *vc = v;

     if ([v isKindOfClass:[UINavigationController class])
     {
         vc = [v visibleViewController];
     }

     if ([vc isKindOfClass:[MyViewController class]])
     {
          MyViewController *myViewController = vc;
          [vc doSomething];
     }
}
  1. 问题:我应该在self.tabBar.viewControllers中编写什么而不是viewcontrollers。我无法弄明白。
  2. 问题:在我在TabBar.m中的方法中实现for循环之后,我能通过调用该方法从另一个viewcontroller到达我的viewcontrollers吗?

1 个答案:

答案 0 :(得分:0)

您正在actionMySlider方法中分配ViewController1和ViewController2的新实例。它们与标签栏控制器中的视图控制器不同。

尝试从标签栏本身访问视图控制器。这里的答案将是:

UITabBarController - How to access a view controller?

在滑块值从viewDidLoad更改后,您应该尝试使用ViewController1和ViewController2中要执行的那些代码行,并使它们成为单独的方法。然后你可以在不调用整个viewDidLoad的情况下调用这些方法。