0

AndroidアプリをiOSに移植しようとしています。iveがc/c ++を実行してからしばらく経ちましたが、とにかく、ObjectiveCはまったく初めてです。単一のビュー「ViewController」から始めました。ViewController.mmにデータを作成するボタンがあります。簡単にするために、それはちょうどダブルとしましょう。

ViewController.mm:

double myDouble = 13;

次のような次のビューを起動するボタンがあります。

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

「TrimView」で、ViewController.mmで取得したデータをグラフィカルに表示したいので、myDoubleを2倍にします。線を引くことができるようにするために、この小さなチュートリアルに従いました: 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);

}

私はちょっと立ち往生していて、私は今私がどのように進むべきかについて意見を探しています。簡単にするために、trimView.mmの位置myDoubleで描画された線を開始したいとします。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'を宣言しません」

TrimView.h:

#import <UIKit/UIKit.h>

@interface TrimView: UIView

@property(nonatomic) double *myDouble;

@end
4

2 に答える 2

1

たとえば、ViewControllerAとViewControllerBを使用します。

doubleViewControllerAから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でdoubleプロパティを作成します-プロパティを確認します。TrimViewが作成され、必要なプロパティを設定することで構成され、実行時にそれらのプロパティを簡単に取得できます。

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