2014-12-13 1 views
0

Привет всем, я пытаюсь добавить два разных действия для одного UIButton. На мой взгляд, есть два UIButtons, таких как «Редактировать», а «Новый» имеет разные действия и табличный вид. Когда я нажимаю кнопку «Редактировать», он показывает возможность редактирования вида таблицы, а ярлык заголовка «Новая» меняет «clear» и «Edit» на «Done», когда я нажимаю «Очистить» текст, он будет показывать предупреждение, щелкая кнопка отмены переходит в обычное предыдущее состояние. До этого все работают нормально. Если мы нажмем «Создать», он должен перейти к следующему виду, но то, что я получаю, это его отображение параметров редактирования, а также переход к следующему представлению.Как добавить два действия UIButton для одного UIButton

// Редактирование таблицы методов

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 
    [messagesTableView setEditing:editing animated:YES]; 

} 

// действия и методы Кнопка

- (IBAction)editButtonAction:(id)sender 
{ 
    if ([editButton.titleLabel.text isEqualToString:@"Edit"]) 
    { 

     [self setEditing:YES]; 
     // 
     [editButton setTitle:@"Done" forState:UIControlStateNormal]; 
     [editButton setTitle:@"Done" forState:UIControlStateSelected]; 

     [createNewMessageBtn setTitle:@"Clear" forState:UIControlStateNormal]; 
     [createNewMessageBtn setTitle:@"clear" forState:UIControlStateSelected]; 
     createNewMessageBtn.tag = 2; 
     createNewMessageBtn.enabled = YES; 
     createNewMessageBtn.userInteractionEnabled = YES; 

     //  [self.voicemailTable reloadData]; 

    } 
    else if ([editButton.titleLabel.text isEqualToString:@"Done"]) 
    { 
     [self setEditing:NO]; 

     // 
     [editButton setTitle:@"Edit" forState:UIControlStateNormal]; 
     [editButton setTitle:@"Edit" forState:UIControlStateSelected]; 

     [createNewMessageBtn setTitle:@"New" forState:UIControlStateNormal]; 
     [createNewMessageBtn setTitle:@"New" forState:UIControlStateSelected]; 
     createNewMessageBtn.tag = 1; 
     createNewMessageBtn.enabled = YES; 
     createNewMessageBtn.userInteractionEnabled = YES; 
     //  [self.voicemailTable reloadData]; 

    } 

    // 
    [self.messagesTableView reloadData]; 


} 

- (IBAction)newConverstionBtnActn:(id)sender 
{ 
    if ([sender tag] == 1) 
    { 
     [self setEditing:NO]; 

     NSLog(@"tag---%ld",(long)[sender tag]); 
     [self.editButton setTitle:@"Edit" forState:UIControlStateNormal]; 
     [self.editButton setTitle:@"Edit" forState:UIControlStateSelected]; 

     [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateNormal]; 
     [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateSelected]; 
     createNewMessageBtn.enabled = YES; 
     createNewMessageBtn.userInteractionEnabled = YES; 
     [self performSegueWithIdentifier:@"newMessage" sender:self]; 


    } 

    else if ([sender tag] == 2) 
    { 
     NSLog(@"tag---%ld",(long)[sender tag]); 

     [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateNormal]; 
     [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateSelected]; 
     createNewMessageBtn.enabled = YES; 
     createNewMessageBtn.userInteractionEnabled = YES; 

     transparentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 540)]; 
     transparentView.backgroundColor = [UIColor clearColor]; 

     [self.view addSubview: transparentView]; 

     // 
     clearAllOption = [[UIButton alloc]initWithFrame: CGRectMake(5, 430, 310, 39)]; 
     clearAllOption.layer.borderColor = [[SupportFeatures getColorFromHexStr:@"FD8646"] CGColor]; 
     clearAllOption.layer.borderWidth = 2; 
     clearAllOption.layer.cornerRadius = 6; 
     [clearAllOption setTitle:@"Clear All Messages" forState:UIControlStateNormal]; 
     [createNewMessageBtn setTitleColor:[SupportFeatures getColorFromHexStr:@"555562"] forState:UIControlStateNormal]; 
      self.clearAllOption.titleLabel.font = [UIFont fontWithName:@"Lato-Regular" size:15]; 


     [clearAllOption setBackgroundColor:[SupportFeatures getColorFromHexStr:@"FD8646"]]; 
     [clearAllOption addTarget:self action:@selector(clearAllContactsAction) forControlEvents:UIControlEventTouchUpInside]; 
     //[self.view addSubview: clearAllOption]; 
     [self.transparentView addSubview: clearAllOption]; 


     // 
     cancelOption = [[UIButton alloc]initWithFrame: CGRectMake(5, 480, 310, 39)]; 
     cancelOption.layer.borderColor = [[SupportFeatures getColorFromHexStr:@"4BBAC7"] CGColor]; 
     cancelOption.layer.borderWidth = 2; 
     cancelOption.layer.cornerRadius = 6; 
     [cancelOption setTitle:@"Cancel" forState:UIControlStateNormal]; 
     cancelOption.titleLabel.font = [UIFont fontWithName:@"Lato-Regular" size:15]; 
     [cancelOption setTitleColor:[SupportFeatures getColorFromHexStr:@"555562"] forState:UIControlStateNormal]; 

     [cancelOption setBackgroundColor:[SupportFeatures getColorFromHexStr:@"4BBAC7"]]; 
     [cancelOption addTarget:self action:@selector(cancelContactsAction) forControlEvents:UIControlEventTouchUpInside]; 

     //[self.view addSubview: cancelOption]; 
     [self.transparentView addSubview: cancelOption]; 

     // 
     self.editButton.userInteractionEnabled = NO; 
//  self.createNewMessageBtn.userInteractionEnabled = YES; 

    } 
} 


- (void)clearAllContactsAction 
{ 
    // 
    [self.transparentView removeFromSuperview]; 

    // 
    self.messagesTableView.hidden = YES; 

    [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateNormal]; 
    [self.createNewMessageBtn setTitle:@"New" forState:UIControlStateSelected]; 
// createNewMessageBtn.enabled = YES; 


    [self.createNewMessageBtn setTitleColor:[SupportFeatures getColorFromHexStr:@"555562"] forState:UIControlStateNormal]; 
    [self.createNewMessageBtn setTitleColor:[SupportFeatures getColorFromHexStr:@"555562"] forState:UIControlStateSelected]; 
    [self.createNewMessageBtn setUserInteractionEnabled: YES]; 

    // 
    [clearAllOption removeFromSuperview]; 
    [cancelOption removeFromSuperview]; 
    // 
    noRecentsOption = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 150, 30)]; 
    noRecentsOption.text = @"No Recents"; 
    [self.view addSubview: noRecentsOption]; 

    // 
    self.editButton.userInteractionEnabled = NO; 
    self.createNewMessageBtn.userInteractionEnabled = YES; 

} 

- (void)cancelContactsAction 
{ 
    [self setEditing:NO]; 

    [createNewMessageBtn setTitle:@"New" forState:UIControlStateNormal]; 
    [createNewMessageBtn setTitle:@"New" forState:UIControlStateSelected]; 
    createNewMessageBtn.tag = 1; 
    createNewMessageBtn.enabled = YES; 
    createNewMessageBtn.userInteractionEnabled = YES; 
    // 
    [self.transparentView removeFromSuperview]; 

    [clearAllOption removeFromSuperview]; 

    [cancelOption removeFromSuperview]; 
    // 
    [self.editButton setTitle:@"Edit" forState:UIControlStateNormal]; 
    [self.editButton setTitle:@"Edit" forState:UIControlStateSelected]; 
    editButton.enabled = YES; 
    editButton.userInteractionEnabled = YES; 


} 

методы Это действие я tried.Thanks заранее

+0

на месте [отправителя тега] с ([editButton .titleLabel.text isEqualToString: @ "Редактировать"]), он показывает предупреждение и переходит к следующему экрану – svs

ответ

1

Пожалуйста, попробуйте следующее Code, В viewDidLoad поставлены следующие Code

[self.btnEdit setTitle:@"Edit" forState:UIControlStateNormal]; 
[self.btnNew setTitle:@"New" forState:UIControlStateNormal]; 

Теперь вы должны подключить следующие Method с вашим Relevant UIButtons

- (IBAction)btnEdit_Done_Click:(id)sender { 

    if([[self.btnEdit titleForState:UIControlStateNormal] isEqualToString:@"Edit"]){ 
     NSLog(@"Put code for allow editing for TableView"); 
     [self.btnNew setTitle:@"Clear" forState:UIControlStateNormal]; 
     [self.btnEdit setTitle:@"Done" forState:UIControlStateNormal]; 
    }else{ 
     [self.btnEdit setTitle:@"Edit" forState:UIControlStateNormal]; 
     [self.btnNew setTitle:@"New" forState:UIControlStateNormal]; 
    } 

} 

- (IBAction)btnNew_Clear_Click:(id)sender { 

    if([[self.btnNew titleForState:UIControlStateNormal]isEqualToString:@"New"]){ 
     NSLog(@"Push to New Controller"); 
    }else{ 
     UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok",@"Cancel", nil]; 
     [alert setTag:101]; 
     [alert show]; 
    } 
} 

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

    if([alertView tag] == 101){ 

     [self.btnEdit setTitle:@"Edit" forState:UIControlStateNormal]; 
     [self.btnNew setTitle:@"New" forState:UIControlStateNormal]; 
     if(buttonIndex == 1){ 
      NSLog(@"clear All Thing"); 
     }else{ 
      NSLog(@"No Action"); 
     } 
    } 
} 
0

На основании значения тега вы можете добавить следующее: -

(editButton.tag==1) ? [editButton addTarget:self action:@selector(doEditAction:) 
forControlEvents:UIControlEventTouchUpInside]:[editButton addTarget:self action:@selector(doneAction:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)doEditAction:(id)sender 
{ 

} 
-(void)doneAction:(id)sender 
{ 

} 
+0

, как можно поместить два тега для одной кнопки? Является ли это возможным?? – svs

+0

да, вы можете установить два тега в соответствии с вашим состоянием. –

0

Насколько я понимаю,

первый набор addTarget как 'newbtnaction' на кнопку «Новый» и внутри этого метода изменяет название кнопки как «clear» и addtarget как имя метода clearaction.

так же, как и вторая кнопка.