iPhone编码:如何在ViewController中设置变量?

iPhone编码:如何在ViewController中设置变量?,iphone,cocoa-touch,ios,global,Iphone,Cocoa Touch,Ios,Global,我有一个选项卡栏应用程序,在一个选项卡视图(FirstView.xib和FirstViewController.h/.m)上有一个MKMapView,在另一个选项卡视图(SecondView.xib)上有一个带标签的普通视图 我在FirstViewController中运行并更新了一个活动的CoreLocation。我还需要SecondView中的CoreLocation变量。它必须在SecondView.xib上显示速度、高度、纬度/经度 我必须如何处理这个问题?我是否也应该为SecondVi

我有一个选项卡栏应用程序,在一个选项卡视图(FirstView.xib和FirstViewController.h/.m)上有一个MKMapView,在另一个选项卡视图(SecondView.xib)上有一个带标签的普通视图

我在FirstViewController中运行并更新了一个活动的CoreLocation。我还需要SecondView中的CoreLocation变量。它必须在SecondView.xib上显示速度、高度、纬度/经度

我必须如何处理这个问题?我是否也应该为SecondView设置一个ViewController?也许还有另一个CoreLocation的例子?还是从FirstViewController中更新secondview的标签更好?(我不知道如何实现第二个选项,即从一个控制器控制两个xib。)


提前谢谢

您应该尝试将You
CLLocation
管理器放在选项卡视图控制器中。然后,当它更新时,它遍历选项卡视图,查看它们是否响应您指定的位置更新方法。这样,它可以处理1、2、…n个需要位置信息的视图

在选项卡视图控制器中:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

    for (UIViewController *thisTabView in tabBarController.viewControllers) {
        NSLog(@"thisTabView: %@", [thisTabView description]);
        if ([thisTabView respondsToSelector:@selector(locationManager:didUpdateToLocation:fromLocation:)]) {
            NSLog(@"thisTabView: calling locationManager:didUpdateToLocation:fromLocation:");
            [thisTabView locationManager:manager didUpdateToLocation:newLocation fromLocation:oldLocation];
        }
    }

}

您应该尝试将You
CLLocation
管理器放在选项卡视图控制器中。然后,当它更新时,它遍历选项卡视图,查看它们是否响应您指定的位置更新方法。这样,它可以处理1、2、…n个需要位置信息的视图

在选项卡视图控制器中:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

    for (UIViewController *thisTabView in tabBarController.viewControllers) {
        NSLog(@"thisTabView: %@", [thisTabView description]);
        if ([thisTabView respondsToSelector:@selector(locationManager:didUpdateToLocation:fromLocation:)]) {
            NSLog(@"thisTabView: calling locationManager:didUpdateToLocation:fromLocation:");
            [thisTabView locationManager:manager didUpdateToLocation:newLocation fromLocation:oldLocation];
        }
    }

}

所有ViewController都可以访问appdelegate,因此使用它来存储变量并将其传递回更新标签,等等

MyAppDelegate*委托=(MyAppDelegate*)[[UIApplication sharedApplication]委托];


然后你可以用它来指向你的字符串,使用
delegate.someString=blah blah

您的所有ViewController都可以访问appdelegate,因此使用它来存储变量并将其传递回更新标签等

MyAppDelegate*委托=(MyAppDelegate*)[[UIApplication sharedApplication]委托];


然后你可以用它来指向你的字符串,使用
delegate.someString=blah blah

此方法似乎只调用一个(第一个)ViewController?我在两个控制器中都有相同的方法,每个控制器都有自己的NSLog()调用。控制台中只打印一个。有什么建议吗?谢谢这个方法似乎只调用一个(第一个)ViewController?我在两个控制器中都有相同的方法,每个控制器都有自己的NSLog()调用。控制台中只打印一个。有什么建议吗?非常感谢。