2013-07-07 4 views
0

У меня есть класс, который имеет расширение UIButton, которое при определенных обстоятельствах показывает UIAlertview.Нужна помощь при представлении контроллера вида

@interface CellButton : UIButton {} 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You Lose!" 
                 message:@"Play Again?" 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:@"cancel", nil]; 
[alert show]; 

Это прекрасно работает, но мне нужно представить контроллер представления, когда пользователь нажимает ok.but, как вы знаете, вы не можете представить контроллер представления с расширением UIButton.

Так что мне было интересно, могу ли я поставить код ниже в другой диспетчер представлений и разрешить ему работать с UIAlert в классе Cellbutton.

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) {  // and they clicked OK. 
     GameController*myNewVC = [[GameController alloc] init]; 
     [self presentModalViewController:myNewVC animated:NO]; 
    } 
} 
+0

дать подклассу кнопки протокол. –

+0

вы действительно не должны делать такие вещи в подклассе UIView, делайте это в контроллере. –

ответ

2

Вы не делаете этого внутри UIButton.

Целью нажатия кнопки UIButton должен быть UIViewController. После этого отобразите вид предупреждения из контроллера представления, а диспетчер представлений будет делегатом UIButton. От их всего будет хорошо работать.

0

Это будет работать до тех пор, пока вы установите делегата представления предупреждения на контроллер вида, с которым хотите обрабатывать презентацию.

Я бы предложил переместить все функциональные возможности в контроллер вида, хотя, например, представить и обработать представление предупреждения с одного и того же контроллера представлений, это может быть вызвано из события с помощью кнопки. Я думаю, что это делает код более удобочитаемым, и на самом деле не имеет смысла, чтобы кнопка знала о предупреждениях.

0

Вы можете объявить глобальную переменную (в appDelegate - и как это сделать HERE); 1 - установить переменную 1 при нажатии кнопки пользователя 2 - получить значение из другого действия viewcontroller , если значение равно 1, затем запустите.

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