0

我有一个具有三个视图控制器的 UITabBar 控制器。我正在尝试刷新我的两个视图控制器,它们是地图视图控制器和表格视图控制器;从带有滑动动作的第三个视图控制器。这是我尝试过的:

- (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 循环后,我能否通过调用该方法从另一个视图控制器访问我的视图控制器?
4

1 回答 1

0

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

尝试从标签栏本身访问视图控制器。在这里找到的答案会:

UITabBarController - 如何访问视图控制器?

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

于 2013-05-23T00:32:10.003 回答