Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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 如何从不同的类Obj-C访问变量_Ios_Objective C_Ios9 - Fatal编程技术网

Ios 如何从不同的类Obj-C访问变量

Ios 如何从不同的类Obj-C访问变量,ios,objective-c,ios9,Ios,Objective C,Ios9,我有TableViewController和ViewController 机场.h @interface Airports : UITableViewController @property(strong, nonatomic) NSNumber* latitude; @property(strong, nonatomic) NSNumber* longitude; @property(strong, nonatomic) NSString* selectedAirportName; @en

我有TableViewController和ViewController

机场.h

@interface Airports : UITableViewController

@property(strong, nonatomic) NSNumber* latitude;
@property(strong, nonatomic) NSNumber* longitude;
@property(strong, nonatomic) NSString* selectedAirportName;

@end
机场.m

下面是一个设置纬度、经度和selectedAirportName属性的实例

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSArray *airportNames = airportsArray[indexPath.row];
    self.selectedAirportName = [airportNames valueForKey:@"$"];
    NSArray *airportCoordinates = airportsCoordinates[indexPath.row];
    self.latitude = [airportCoordinates valueForKey:@"Latitude"];
    self.longitude = [airportCoordinates valueForKey:@"Longitude"];
}
行选择将用户转发到ViewController,其中我有一个实例,根据所选行中的信息显示带有标记的GoogleMap。如何让该实例从Airports类访问纬度、经度和selectedAirportName属性?实际上,我想知道如何将这些属性公开,以便在DidSelectRowatineXpath实例和Airports类之外使用它们


我只是个初学者。所以不要向我开枪:)

你应该创建一个单独的对象,用谷歌地图映射你希望传递给viewcontroller的数据,也许可以称之为Airport之类的东西

然后,当您从第一个视图控制器(Airports)推送segue时,可以在prepareforsegue方法中将此对象传递给视图控制器


在您的
视图控制器.h
中,使其如下所示:

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController

@property NSNumber* airportLatitude;
@property NSNumber* airportLongitude;

@end
ViewController *view = [[ViewController alloc] init];

view.airportLatitude  = [NSNumber numberWithInt:1];
view.airportLongitude = [NSNumber numberWithInt:1];

关于这个话题有很多问题。寻找通过segues传递数据的方法。这可能是iOS标签中最常见的问题(也请参见此处)。我会要求其他人给出答案和链接,来考虑为什么经常被问和再问。我认为原因在于,给出的答案太多是关于vc通信的具体机制,而对于iOS中的MVC思想则不够。我不能不同意,但会挑出一点小毛病,说(a)视图视图对视图控制器实例来说是个坏名字,以及(b)建议分配这样一个VC会让读者犯下最常见的错误(即转到该VC的不同实例),以及(c)原则性答案在某个时候应该包含“model”一词,包括VCS应该被认为是一个共享模型的检查员和编辑。我会把它考虑进去,然后做我认为最好的版本。谢谢。那么,当我转到ViewController TableViewController时,所有属性都会消失?知道了。但是,当我尝试在Airports.mHooray中使用不同的实例打印纬度和经度值时,NSLog没有显示任何内容。单独的对象可以被认为是应用程序的状态,它的存在理由,也称为“模型”。