如何为单个UIButton添加两个UIButton操作

时间:2014-12-13 09:02:12

标签: ios objective-c iphone uibutton ibaction

大家好,我试图为单个UIButton添加两个不同的操作。在我看来,有两个UIButton,如"编辑"和"新"有不同的动作和表格视图。当我点击编辑按钮时,它会显示表格视图的编辑选项和" New"按钮标题标签更改为"清除"和"编辑"到"完成",当我点击"清除"文本它将显示警报,单击取消按钮它将进入正常的先前状态。到目前为止一切正常。如果我们点击"新"它应该导航到下一个视图,但我得到的是它显示的编辑选项以及导航到下一个视图。

//编辑表格方法

- (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;


}

我已尝试过这种行动方法。谢谢提前

3 个答案:

答案 0 :(得分:1)

请尝试关注CodeviewDidLoad放入以下Code

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

现在,您必须将MethodRelevant 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");
        }
    }
}

答案 1 :(得分: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
{

}

答案 2 :(得分:0)

据我了解,

首先将addTarget设置为“newbtnaction”到“New”按钮,在该方法中将按钮标题更改为“clear”,并将addtarget更改为“clearaction”方法名称。

与第二个按钮相同。