Objective c 将数据从一个类传输到另一个类

Objective c 将数据从一个类传输到另一个类,objective-c,ios,Objective C,Ios,我正在尝试将Android应用程序移植到ios。自从我完成c/c++已经有一段时间了,我对objective c完全是新手:我从一个视图“ViewController”开始。我有一个按钮,可以在ViewController.mm中创建数据。为了简单起见,让我们说它只是一个双重的 ViewController.mm: double myDouble = 13; 我有一个按钮,可以启动下一个视图,如下所示: [[NSBundle mainBundle] loadNibNamed:@"TrimVie

我正在尝试将Android应用程序移植到ios。自从我完成c/c++已经有一段时间了,我对objective c完全是新手:我从一个视图“ViewController”开始。我有一个按钮,可以在ViewController.mm中创建数据。为了简单起见,让我们说它只是一个双重的

ViewController.mm:

double myDouble = 13;
我有一个按钮,可以启动下一个视图,如下所示:

[[NSBundle mainBundle] loadNibNamed:@"TrimView" owner:self options:nil]; 
[self.view addSubview:TrimView]; 
在“TrimView”中,我想以图形方式显示我在ViewController.mm中获得的数据,因此double myDouble。 为了能够画线,我遵循了这个小教程:

我用这个代码来画一条线: TrimView.mm:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0);
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    CGFloat components[] = {0.0, 0.0, 1.0, 1.0};
    CGColorRef color = CGColorCreate(colorspace, components);
    CGContextSetStrokeColorWithColor(context, color);
    CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, 300, 400);
    CGContextStrokePath(context);
    CGColorSpaceRelease(colorspace);
    CGColorRelease(color);

}
我有点卡住了,我现在正在寻找我该如何继续下去的意见。为简单起见,假设我只想在trimView.mm中的myDouble位置开始绘制直线。如何将其从ViewController传输到trimView

我现在的问题是我没有

TrimView tf;
在ViewController.mm中,我可以执行以下操作:

TrimView.setMyDouble(myDouble);
我只是(如上所述):

在阅读了答案后,我尝试了以下方法:

TrimView *nextView =  [[TrimView alloc] initWithNib=@"TrimView" bundle=nil];
但是得到了这样的结论:“没有可见的@interface为'UIView'声明选择器'alloc'”

TrimView.h:

#import <UIKit/UIKit.h>

@interface TrimView: UIView

@property(nonatomic) double *myDouble;

@end
#导入
@界面视图:UIView
@属性(非原子)double*myDouble;
@结束

您在TrimView上创建了一个double属性-阅读属性。TrimView将被创建,然后通过设置它所需的属性进行配置,当它运行时,可以轻松地获得这些属性

@property (nonatomic, assign) double myDouble;

例如,使用ViewControllerA和ViewControllerB

要将
double
值从ViewControllerA传递到ViewControllerB,我们将执行以下操作:

1) 在ViewControllerB.h中,为BOOL创建一个属性

@property(nonatomic) double *myDouble;
2) 在ViewControllerA中,包括ViewControllerB:

#import "ViewControllerB.h"
3) 要加载视图时,需要在ViewControllerB中设置属性,然后再将其推送到导航堆栈上:

ViewControllerB *nextView = [[ViewControllerB alloc] initWithNib=@"ViewControllerB" bundle=nil];
nextView.myDouble = myDouble;
[self pushViewController:nextView animated:YES];
这会将ViewControllerB中的double设置为所需的值


在您的情况下,您可以将最后一行更改为
[self.view addSubview:nextView]

好吧,你如何将一个类成员变量的值传递到Java中的另一个类?老实说,我学了c,然后自学了android/Java。在android中,我有一个类,包含6000行代码。我现在想得到整个OPP的东西,但是如果你习惯于这样编码,那就很难了。C++标签:如果这可以用C++或Objto-C来做,我就不在乎哪种方式。use@juanchopanza我想我的问题不是很清楚。我不是在ViewController中创建一个类,比如TrimView tf,我以后可以在其中执行类似于tf.setMyDouble的操作。您能确保项目文件夹中没有其他TrimView.h/m吗?以防万一你在某个时候复制了它,它会造成冲突。。。您仍然可以尝试清理项目,并退出/重新启动Xcode。抱歉,我以为它已修复,但情况并非如此:对于“UIView”,没有可见的@接口在ViewControllerB*nextView=[[ViewControllerB alloc]initWithNib=@“ViewControllerB”bundle=nil]声明选择器“alloc”;将按照您所说的检查文件。操作没有帮助。将在问题中添加整个TrimView.h
ViewControllerB *nextView = [[ViewControllerB alloc] initWithNib=@"ViewControllerB" bundle=nil];
nextView.myDouble = myDouble;
[self pushViewController:nextView animated:YES];