我有一个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];
}
}
答案 0 :(得分:0)
您正在actionMySlider方法中分配ViewController1和ViewController2的新实例。它们与标签栏控制器中的视图控制器不同。
尝试从标签栏本身访问视图控制器。这里的答案将是:
UITabBarController - How to access a view controller?
在滑块值从viewDidLoad更改后,您应该尝试使用ViewController1和ViewController2中要执行的那些代码行,并使它们成为单独的方法。然后你可以在不调用整个viewDidLoad的情况下调用这些方法。