0

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

视图控制器.mm:

double myDouble = 13;

我有一个按钮,可以像这样启动下一个视图:

[[NSBundle mainBundle] loadNibNamed:@"TrimView" owner:self options:nil]; 
[self.view addSubview:TrimView]; 

在“TrimView”上,我想以图形方式显示我在 ViewController.mm 中获得的数据,因此是双倍的 myDouble。我按照这个小教程来画线: http ://www.techotopia.com/index.php/An_iPhone_Graphics_Drawing_Tutorial_using_Quartz_2D

我使用这段代码来画线: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);

}

我有点卡住了,我现在正在寻找意见,我应该如何继续。为简单起见,假设我只想在位置 myDouble 处开始在 trimView.mm 中绘制的线。我如何将它从 ViewController 转移到 trimView ?

我现在的问题是我没有类似的东西

TrimView tf;

在 ViewController.mm 中我可以执行以下操作:

TrimView.setMyDouble(myDouble);

我只是(如上所述):

[[NSBundle mainBundle] loadNibNamed:@"TrimView" owner:self options:nil]; 
[self.view addSubview:TrimView]; 

阅读答案后,我尝试了这个:

TrimView *nextView =  [[TrimView alloc] initWithNib=@"TrimView" bundle=nil];

但是得到了这个:“'UIView'没有可见的@interface声明选择器'alloc'”

修剪视图.h:

#import <UIKit/UIKit.h>

@interface TrimView: UIView

@property(nonatomic) double *myDouble;

@end
4

2 回答 2

1

例如,使用 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];.

于 2012-08-27T14:15:13.237 回答
0

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

@property (nonatomic, assign) double myDouble;
于 2012-08-27T13:49:12.287 回答