2015-08-20 2 views
0

У меня есть alertView, объявленный таким способом.Я не мог позвонить одному IBaction при нажатии кнопки alertView

UIAlertView* alertView =[[UIAlertView alloc]initWithTitle:@"Check In Alert" message:@"Are you sure he/she is there?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil]; 
         alertView.tag = sender; 
         [alertView show]; 

Итак, в alertView метод clickedButtonIndex У меня есть этот код.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if([alertView.title isEqualToString:@"Check In Alert"]) 
    { 
     ClassRoomParticipant *clsrp; 
     NSMutableArray *data = nil; 
     data=[self.presentDataArray objectAtIndex:0]; 
     clsrp = (ClassRoomParticipant *)[data objectAtIndex:alertView.tag]; 
     NSLog(@"Do Nothing"); 
     if (buttonIndex == 0) 
     { 

      [clsrp setGetParcpntCheckInStatus : 2];// Checked in by Teacher 

     } 
     else if (buttonIndex == 1) 
     { 

      [clsrp setGetParcpntCheckInStatus : 3];// Not checked in by Teacher, still Absent 

     } 
     return; 
    } 
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex]; 

    if([title isEqualToString:@"OK"]) 
    { 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 
    else if([title isEqualToString:@"Button 2"]) 
    { 
     //NSLog(@"Button 2 was selected."); 
    } 
    else if([title isEqualToString:@"Button 3"]) 
    { 
     //NSLog(@"Button 3 was selected."); 
    } 
} 

У меня есть такой метод.

-(void)changeStudentAction:(id)sender 
{ 
    CustomUIButton *button=sender; 
    NSInteger flag = 0; 
    if (button.selected) 
    { 
     [button setSelected:NO]; 
     [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal]; 
     flag=0; 
    } 
    else 
    { 
     [button setSelected:YES]; 
     [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal]; 
     flag=1; 
    } 

    if (button.collectionIdentifier == ClsRmPrctPresntCollectionView) 
    { 
     [self ModifyDataArray:button.taggy flag:flag identifier:ClsRmPrctPresntCollectionView change:@"Button" toDate:nil section:button.section]; 
     [self modifyCollectionArray:PRESENT processingData:self.presentDataArray identifier:ClsRmPrctPresntCollectionView index:button.taggy section:button.section]; 
    } 

    self.isAnyChangesHappened=YES; 
} 

Я хочу, чтобы вызвать этот метод changeStudentAction внутри кнопки alertView нажмите «Да» .Когда я называю этот метод внутри buttonIndex == 0, он дает мне ошибку. Не могли бы вы рассказать мне, как вызвать этот метод внутри alertview.

+0

Какая ошибка? –

ответ

0

1) Создать выход из «CustomUIButton», для которых «changeStudentAction» это действие

2) в предупреждение вид делегата вызова [self changeStudentAction:self.customUIbuttonOutlet]

0

Я предполагаю, что это показывает вам сообщение об ошибке из-за alertView.tag = sender; заявления. Убедитесь, что sender является целым числом.

Также вы не установили делегат alertView. Попробуйте следующее: alertView.delegate = self;

Отдых все кажется совершенным. Просто вызовите метод changeStudentAction в правильном блоке метода - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex.

+0

Я установил делегат для alertView. Теперь я хочу вызвать метод changeStudentAction внутри alertView.Can Я называю это if (buttonIndex == 0) { [self changeStudentAction: (id) clsrp]; } } Но это грохот. Показ «Завершение приложения из-за неперехваченного исключения» NSInvalidArgumentException », причина: '- [ClassRoomParticipant isSelected]: непризнанный селектор, отправленный экземпляру 0x7a7b7ac0« –

+0

Это потому, что ваша переменная «clsrp» имеет класс ClassRoomParticipant , Где, как вы сопоставляете эту переменную с «CustomUIButton» в методе «changeStudentAction», что является недопустимым. –

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