2013-07-16 2 views
0

Как вызвать этот метод из кода Кнопка выбора У меня есть ниже:Как мне вызвать метод из селектора UIbutton?

- (void)displayEditorForImage:(UIImage *)imageToEdit 

{ 

    AFPhotoEditorController *editorController = [[AFPhotoEditorController alloc] initWithImage:imageToEdit]; 

    [editorController setDelegate:self]; 

    [self presentViewController:editorController animated:YES completion:nil]; 

} 

вот UIButton я пытаюсь вызвать метод с:

//edit button 
UIButton *editButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[editButton addTarget:self 
       action:@selector(editBtnTouch) 
    forControlEvents:UIControlEventTouchDown]; 

[editButton setTitle:@"Effects" forState:UIControlStateNormal]; 


**// the following line shows the selector where I'm unsure how to call the method from the code above** 
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayEditorForImage:)] && 
     ([UIScreen mainScreen].scale == 2.0)) { 
     // Retina display 
     editButton.frame = CGRectMake(220.0, 320.0, 60.0, 40.0); 


} else { 
    editButton.frame = CGRectMake(220.0, 315.0, 60.0, 40.0); 
} 

[self.view addSubview:editButton]; 

спасибо за помощь

ответ

1

Когда вы вызываете селектор, который вы добавляете к кнопке, сама кнопка будет передана в качестве первого аргумента, если селектор разрешает ее использовать. Для того, чтобы получить ссылку на ваше изображение, вы либо должны сделать это (предполагая, что изображение, которое вы хотите это фоновое изображение для кнопки):

- (void)displayEditorForImage:(UIButton*)sender { 
    UIImage* imageToEdit = [sender backgroundImageForState:UIControlStateNormal]; 
    AFPhotoEditorController *editorController = [[AFPhotoEditorController alloc] initWithImage:imageToEdit]; 

    [editorController setDelegate:self]; 

    [self presentViewController:editorController animated:YES completion:nil]; 
} 

Или вам нужно будет сделать пользовательский UIButton, который имеет дополнительное свойство для соответствующего изображения, а затем просто доступ к изображению с помощью кнопки на селекторе:

- (void)displayEditorForImage:(UIButton*)sender { 
    if([sender isKindOfClass:[YourCustomButtonClass class]]) { 
     UIImage* imageToEdit = ((YourCustomButtonClass*)sender).customImageProperty; 

     AFPhotoEditorController *editorController = [[AFPhotoEditorController alloc] initWithImage:imageToEdit]; 

     [editorController setDelegate:self]; 

     [self presentViewController:editorController animated:YES completion:nil]; 
    } 
} 

Edit:

Вы, кажется, следует путать о том, как сделать UIButton вызова метода когда он постучал. Вам нужно добавить объект, который определяет метод как цель кнопки (в данном случае self), добавить метод в качестве селектора и вызвать метод при нажатии кнопки UIControlEventTouchUpInside. Таким образом, ваш код будет:

[editButton addTarget:self action:@selector(displayEditorForImage:) forControlEvents:UIControlEventTouchUpInside]; 
+0

спасибо за сообщение. изображение, которое я хочу быть прошлым, - это не фоновое изображение кнопки. Это изображение, которое на вид вместо этого. – user2588945

+0

Хорошо. Пока у вас есть ссылка на изображение при вызове селектора, вам хорошо идти. –

+0

Что я могу здесь вставить: responsesToSelector: @selector (displayEditorForImage :) в тот момент, когда я получаю нераспознанный селектор, отправленный в сообщение об ошибке экземпляра ... – user2588945

Смежные вопросы