【发布时间】:2015-02-11 23:08:22
【问题描述】:
大家好,我正在尝试为单个 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;
}
这个动作方法我试过了。提前谢谢
【问题讨论】:
-
用 ([editButton.titleLabel.text isEqualToString:@"Edit"]) 代替 [sender tag] 显示警报并导航到下一个屏幕
标签: ios objective-c iphone uibutton ibaction