在类中设置变量,在B类中设置视图

时间:2013-07-18 09:16:57

标签: ios objective-c

我是新手/学习Objective-C和iOS开发 - 这里有一个基本问题我无法理解。

我有两节课。

在ClassA中,在头文件中我定义了一个NSString对象(planetNameImage),因此可以公开访问它。然后在.m文件中我使用:

设置它
self.planetNameImage = planetSelected;

在ClassB中,我正在尝试检索此值,因此我首先使用以下方法实现ClassA:

ClassA *claA = [[ClassA alloc] init];

然后尝试使用:

调用该变量
NSString *imageName = claA.planetNameImage;

然而,这不起作用 - 任何想法?

感谢。

6 个答案:

答案 0 :(得分:1)

怎么样?

ClassA.h

@interface ClassA:NSObject
   @property (retain, nonatomic) NSString *planetNameImage
@end

ClassB.m
#import "ClassA.h"

@implementation ClassB
- (void)someFunc
  {
      ClassA *instance = [ClassA new];
      instance.planetNameImage = @"name of image";
      NSString *imageName = instance.planetNameImage;
  }
@end

答案 1 :(得分:0)

要将类的实例变量访问到其他类,您需要将其定义为属性。 你可以这样做

在classA.h中

@property (nonatomic,copy)   NSString * planetNameImage;
ClassA.m中的

@synthesize planetNameImage;

@property将创建setter& planetNameImage的getter方法,您可以在classB中使用它。

答案 2 :(得分:0)

最佳方式是将NSString名称planetNameImage传递给您的 ClassB

切换到B类时写代码。

ClassB *obj = [[ClassB alloc] init];
obj.newString = planetNameImage; 
[obj presentModelViewController:obj animated:YES];

别忘了放置NSString *newString并设置@property,也就是ClassB.h文件。

答案 3 :(得分:0)

您需要将planetNameImage作为其属性

@property (nonatomic) NSString *planetNameImage ;

和.m文件

synthesize planetNameImage ;

此外,我认为您需要在init

ClassA方法中添加以下语句
self.planetNameImage = planetSelected;

答案 4 :(得分:0)

基本上有两种方法可以解决这个问题。

方法I 声明iVar并公开访问者方法

// .h file
@interface ClassA : NSObject {
    NSString    *planetNameImage;
}

- (NSString*) getPlanetNameImage;

@end

// .m file
@implementation ClassA

- (NSString*) getPlanetNameImage {
    return planetNameImage;
}

@end

方法I 声明属性并合成

// .h file
@interface ClassA : NSObject

@property(nonatomic,strong)NSString    *planetNameImage;

@end

// .m file
@implementation ClassA

@synthesize planetNameImage;

@end

如何在ClassB中使用

#import "ClassA.h" 

- (void) someClassBMethod {
     ClassA *claA = [[ClassA alloc] init];
     NSLog(@"String: %@", [claA getPlanetNameImage]);
     //OR
     NSLog(@"String: %@", claA.planetNameImage);
}

希望有所帮助。

答案 5 :(得分:0)

试试这个:

ClassA.h

@property (nonatomic, retain) NSString *planetNameImage;

ClassA.m

@synthesize planetNameImage = _planetNameImage;

_planetNameImage = planetSelected;

ClassB.m

NSString *imageName = classA.planetNameImage;