-1

これが私のコードです:

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
  [super viewDidLoad];

  UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(50.0, 50.0, 0, 0)];
  [self.view addSubview:view1];
}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch.view isEqual:self]) {
        CGPoint point = [[touches anyObject] locationInView:self];
        NSLog(@"%@",NSStringFromCGPoint(point));
        self.view1.center = point;
     }
}

touchesMovedメソッドからクラス「UIView」のインスタンス「view1」にアクセスできるようにしたいです。

前もって感謝します!

4

2 に答える 2

2

他の回答に記載されているように、ローカル変数を宣言できます。ただし、私の意見では、以下のように匿名カテゴリでプライベート プロパティを宣言することをお勧めします。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) UIView *view1; // declares view1 as a private property
@end

@implementation ViewController 
@synthesize view1 = _view1;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view1 = [[UIView alloc] initWithFrame:CGRectMake(50.0, 50.0, 0, 0)];
    [self.view addSubview:self.view1];
}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch.view isEqual:self])
    {
        CGPoint point = [[touches anyObject] locationInView:self];
        NSLog(@"%@",NSStringFromCGPoint(point));
        self.view1.center = point;
    }
}
于 2013-01-03T23:06:35.103 に答える
0

rect1ファイルに配置することで、インスタンス変数を作成でき.hます。次のようなことができます:

@interface tempViewController : UIViewController
{
      myRect *rect1;
}

その後、.mファイルで再度宣言する必要はありません。

于 2013-01-03T22:56:45.240 に答える