xamarin.ios - Monotouch - 全局变量

标签 xamarin.ios

如何在单点触控应用程序中存储/访问全局变量?我正在 AppDelegate 的 FinishedLaunching 方法期间检索 GPS 位置(使用 Monotouch.CoreLocation.CLLocationManager)。然后,我如何从该应用程序委托(delegate)上的属性(例如,从 View )访问该信息?或者对于全局数据还有另一种首选方法吗?

更新: 我只想在启动时获取该位置一次,然后从我的所有 View 中访问该位置。这是我的 AppDelegate - 我想从 View 访问 locationManager 字段。我当然可以添加一个属性来执行此操作,但我想我的问题是“如何从 View 访问该属性(或者我什至可以,考虑到它是委托(delegate))”?

// The name AppDelegate is referenced in the MainWindow.xib file.
public partial class AppDelegate : UIApplicationDelegate
{
    private CLLocationManager locationManager = new CLLocationManager();

    // This method is invoked when the application has loaded its UI and its ready to run
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {   
        locationManager.Delegate = new GpsLocationManagerDelegate();
        locationManager.StartUpdatingLocation();

        window.AddSubview (navController.View);
        window.MakeKeyAndVisible ();        
        return true;
    }

    // This method is required in iPhoneOS 3.0
    public override void OnActivated (UIApplication application)
    {
    }
}

最佳答案

通常,大多数人会告诉您避免全局变量,而是将您需要的内容传递给委托(delegate)。 (我同意这种观点)。

但是,您可以使用单例类、服务定位器或具有静态字段/属性的静态类来在 C#(或任何其他 Dotnet/Mono 兼容语言)中获得类似全局变量的行为。

就您而言,我认为您自己编写了 GpsLocationManagerDelegate 类。如果是这样,您可以更改构造函数以获取必要信息的参数( View 、对应用程序委托(delegate)的引用和/或对位置管理器的引用)并将其存储在 GpsLocationManagerDelegate 实例中。如果您没有自己编写 GpsLocationManagerDelegate 并且它没有声明为 seal,请对其进行子类化并创建适当的构造函数。

这个例子看起来很接近你所追求的:http://www.conceptdevelopment.net/iPhone/MapKit01/Main.cs.htm

关于xamarin.ios - Monotouch - 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059521/

相关文章:

c# - 从 DispatchQueue.MainQueue.DispatchAsync 返回值

ios - 如何在 UiTableViewCell 中动态更改 ImageView?

c# - 将 UITableView 从列表切换到分组的最佳方法是什么?

Xamarin "xcodebuild output not as expected"

c# - 单色触摸 : Loading screen

xamarin.ios - Facebook iOS SDK : App crashes right after starting with "Symbol not found: _ACFacebookAppIdKey." only in iOS 5

ios - 缩放后图像未在 ScrollView 中居中

iPhone:Retina 显示屏将字体写入 UIImage

ios - 奇怪的 Xamarin.iOS 错误仅在启用调试时出现(即席/发布版本)

iphone - 调用 PopToRootViewController 后如何清理 View Controller ?