0

3 つのビュー コントローラーを持つ UITabBar コントローラーがあります。マップビューコントローラーとテーブルビューコントローラーである2つのビューコントローラーを更新しようとしています。スライドのアクションで 3 番目のビュー コントローラーから。ここで私が試したこと:

- (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 の両方の新しいインスタンスを割り当てています。これらは、タブ バー コントローラーのビュー コントローラーと同じではありません。

タブバー自体からView Controllerにアクセスしてみてください。ここにある答えは次のようになります。

UITabBarController - ビュー コントローラにアクセスするには?

また、スライダーの値が viewDidLoad から変更された後に ViewController1 と ViewController2 で実行するコード行を取得し、それらを別のメソッドにするようにしてください。その後、viewDidLoad 全体を呼び出すことなく、これらのメソッドを呼び出すことができます。

于 2013-05-23T00:32:10.003 に答える