大家好,我试图为单个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;
}
我已尝试过这种行动方法。谢谢提前
答案 0 :(得分: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");
}
}
}
答案 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”方法名称。
与第二个按钮相同。