2013-06-12 7 views
-1

Я использую zBar SDK, когда код qr обнаружил, что делегат будет запущен, внутри этого делегата я определил myView и использовал его как оверлей на камере с информацией об этом qr-коде. внутри myView есть кнопка, вызывающая метод (testAction), но внутри этого метода я не могу получить доступ к каким-либо объектам, которые я определил в делетете, как я могу получить доступ к myView и объектам внутри этого объекта testAction?Вызов метода внутри делегата

- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 

    UIView *myView; 
    CGRect frame= CGRectMake(0, 0, 320, 428); 
    myView=[[UIView alloc] initWithFrame:frame]; 
    myView.backgroundColor=[UIColor greenColor]; 
    myView.alpha=0.7; 


    CGRect labelFrame = CGRectMake(0, 0, 500, 30); 
    UILabel* myLabel = [[UILabel alloc] initWithFrame: labelFrame]; 

    [myLabel setTextColor: [UIColor orangeColor]]; 

    NSString *combined = [NSString stringWithFormat:@"%@%@", @"Title: ", symbol.data]; 
    myLabel.text=combined; 


    UIButton * myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    myButton.frame = CGRectMake(10, 50, 100, 50); 
    myButton.tag = 121; 
    [myButton setTitle:@"Do Something" forState:UIControlStateNormal]; 
    [myButton setBackgroundImage:nil forState:UIControlStateNormal]; 
    [myButton addTarget:self action:@selector(testAction:) forControlEvents:UIControlEventTouchUpInside]; 

    //[button setBackgroundColor:red]; 



    [myView addSubview: myLabel]; 
    [myView addSubview: myButton]; 

    reader.cameraOverlayView=myView; 


} 

- (void)testAction: (id)sender{ 
    //my issue is here 
} 

ответ

0

Сделайте их недвижимостью.

В интерфейсе есть:

@property (strong, nonatomic) UIView *myView; 
@property (strong, nonatomic) UILabel *myLabel; 
@property (strong, nonatomic) UIButton *myButton; 

В вашем методе делегата:

CGRect frame= CGRectMake(0, 0, 320, 428); 
self.myView=[[UIView alloc] initWithFrame:frame]; 
self.myView.backgroundColor=[UIColor greenColor]; 
self.myView.alpha=0.7; 

CGRect labelFrame = CGRectMake(0, 0, 500, 30); 
self.myLabel = [[UILabel alloc] initWithFrame: labelFrame]; 
self.myLabel.textColor = [UIColor orangeColor]; 
self.myLabel.text = [NSString stringWithFormat:@"%@%@", @"Title: ", symbol.data]; 

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
self.myButton.frame = CGRectMake(10, 50, 100, 50); 
self.myButton.tag = 121; 
[self.myButton setTitle:@"Do Something" forState:UIControlStateNormal]; 
[self.myButton setBackgroundImage:nil forState:UIControlStateNormal]; 
[self.myButton addTarget:self action:@selector(testAction:) forControlEvents:UIControlEventTouchUpInside]; 

[self.myView addSubview:self.myLabel]; 
[self.myView addSubview:self.myButton]; 

reader.cameraOverlayView = self.myView; 

Наконец в своем действии:

- (void)testAction: (id)sender 
{ 
    // self.myView, self.myLabel and self.myButton are all available. 
} 
+0

OMG иногда мозг просто быть заблокирован! – user2211254