Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从另一个类调用变量_Ios_Variables_Gps - Fatal编程技术网

Ios 如何从另一个类调用变量

Ios 如何从另一个类调用变量,ios,variables,gps,Ios,Variables,Gps,首先,你们知道有什么好的教程网站或书籍可以学习如何为iOS6编写代码吗 现在来看手头的问题,我有一个AppDelegate类和一个ViewController类 我正在使用AppDelegate类查找我的当前位置并将其另存为NSString 我在ViewController类中有一个标签,我想在其中显示我的位置 在java中,我通常只做这样的事情 label.text = AppDelegate.myLocationString; 但我对目标c还相当陌生,我不知道如何做到这一点。老实说,我甚至

首先,你们知道有什么好的教程网站或书籍可以学习如何为iOS6编写代码吗

现在来看手头的问题,我有一个AppDelegate类和一个ViewController类

我正在使用AppDelegate类查找我的当前位置并将其另存为NSString

我在ViewController类中有一个标签,我想在其中显示我的位置

在java中,我通常只做这样的事情

label.text = AppDelegate.myLocationString;
但我对目标c还相当陌生,我不知道如何做到这一点。老实说,我甚至不确定我是否对这种语言采取了正确的方法。在目标c中有没有其他方法来解决这个问题

我已经试着四处搜索如何做到这一点,但我甚至不确定我的搜索措辞是否正确,所以我不知道我的搜索方向是否正确

如能提供任何帮助,我们将不胜感激

我现在的代码:

AppDelegate.h

#import <UIKit/UIKit.h>

#import CoreLocation/CoreLocation.h

@class BIDViewController;

@interface BIDAppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) BIDViewController *viewController;

@property (strong, nonatomic) CLLocationManager *locationManager;

@property (strong, nonatomic) NSString *myPosition;

@end
在ViewController中

BIDAppDelegate *appDelegate = (BIDAppDelegate *)[UIApplication sharedApplication].delegate;
[positionLabel setText:appDelegate.myPosition];
如何从另一个类调用变量

假设您在
ClassB

ClassA *aObj=... ; //create an object of ClassA
aObj.propertyName=...;//set the property or ivar
NSString *string=aObj.propertyName;//retrieve it

你们知道有什么好的教程网站或书籍可以学习如何使用吗 iOS6的代码


要从视图控制器引用应用程序委派,请首先导入其定义(您已经准备好了):

然后在代码中获取委托:

BIDAppDelegate *appDelegate = (BIDAppDelegate *)[[UIApplication sharedApplication] delegate];
CLLocation *location = appDelegate.locationManager.location;
然后从代理获取位置:

BIDAppDelegate *appDelegate = (BIDAppDelegate *)[[UIApplication sharedApplication] delegate];
CLLocation *location = appDelegate.locationManager.location;
然后对location对象调用您喜欢的任何方法:

NSString *descr = location.description;
或通过以下方式获得预先计算的位置:

NSString *position = appDelegate.myPosition;

我得到一个错误,这一行的“used type‘BIDAppDelegate’,其中需要算术或指针类型”,BIDAppDelegate*appDelegate=(BIDAppDelegate)[[UIApplication sharedApplication]delegate]@伊恩:我最初的编辑遗漏了一个
*
。它应该是
(BIDAppDelegate*)
。另外,感谢您的回复,当我阅读了您的评论后,我意识到您的做法会带来更多好处sense@Ian没问题。此外,Marco Pace的回答也值得注意,因为他展示了如何实际设置标签文本。是的,明白了!:我非常感谢你。我现在已经掌握了这门语言的诀窍,但它相当棘手!
NSString *descr = location.description;
NSString *position = appDelegate.myPosition;