Iphone 以编程方式调用iAction方法不会更改按钮的背景?
我有一个应用程序,在其中我向滚动视图添加了一些动态数量的按钮。我为Iphone 以编程方式调用iAction方法不会更改按钮的背景?,iphone,ios,ipad,uibutton,Iphone,Ios,Ipad,Uibutton,我有一个应用程序,在其中我向滚动视图添加了一些动态数量的按钮。我为ui按钮设置了一个普通背景并选择了背景。出于某些原因,我需要通过以下方式以编程方式调用ui按钮sender方法: [self buttontapped:nil]; 如下所示,但使用代码不会更改按钮的背景: button.selected = YES; 我最初设置了按钮的背景如下: btn = [UIButton buttonWithType:UIButtonTypeCustom]; int j = i+1;
ui按钮设置了一个普通背景并选择了背景。出于某些原因,我需要通过以下方式以编程方式调用ui按钮
sender方法:
[self buttontapped:nil];
如下所示,但使用代码不会更改按钮的背景:
button.selected = YES;
我最初设置了按钮的背景如下:
btn = [UIButton buttonWithType:UIButtonTypeCustom];
int j = i+1;
btn.frame = CGRectMake((j-1)*77, 0, 77, 44);
[btn setBackgroundImage:[UIImage imageNamed:@"bar.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"bar_hvr.png"] forState:UIControlStateSelected];
btn.selected = NO;
btn.backgroundColor = [UIColor clearColor];
btn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
btn.titleLabel.textColor = [UIColor whiteColor];
[btn setTitle:head forState:UIControlStateNormal];
btn.tag = i;
[tabBarS addSubview:btn];
-(void)buttonTapped:(id)sender {
if(sender==nil)
{
btn.tag=0;
}
for(int i=0;i<[sarray count];i++)
{
btn.selected=NO;
}
btn = (UIButton *)sender;
NSLog(@"Tab bar %d is clicked",btn.tag);
[self tabCall:btn.tag];
btn.selected = YES;
}
btn=[UIButton按钮类型:UIButtonTypeCustom];
int j=i+1;
btn.frame=CGRectMake((j-1)*77,0,77,44);
[btn setBackgroundImage:[UIImage ImageName:@“bar.png”]用于状态:UIControlStateNormal];
[btn setBackgroundImage:[UIImage ImageName:@“bar_hvr.png”]用于状态:UIControlStateSelected];
btn.selected=否;
btn.backgroundColor=[UIColor clearColor];
btn.titleLabel.font=[UIFont fontWithName:@“Helvetica Bold”大小:14];
btn.titleLabel.textColor=[UIColor whiteColor];
[btn setTitle:状态头:UIControlStateNormal];
btn.tag=i;
[选项卡栏添加子视图:btn];
-(无效)按钮:(id)发送者{
如果(发送方==nil)
{
btn.tag=0;
}
对于(int i=0;i在按钮操作中
btn.selected=YES;
最后一行使按钮始终处于选定状态
还可以按如下方式获取正确的实例:
btn=(UIButton *)sender;
首先写下这一行,并将方法类型从void
更改为iAction
btn = (UIButton *)sender;
像贝娄一样
-(IBAction)buttonTapped:(id)sender {
btn = (UIButton *)sender;
if(sender==nil)
{
btn.tag=0;
}
for(int i=0;i<[sarray count];i++)
{
[btn setSelected:NO];
}
NSLog(@"Tab bar %d is clicked",btn.tag);
[self tabCall:btn.tag];
[btn setSelected:YES];
}
-(iAction)按钮已添加:(id)发件人{
btn=(UIButton*)发送方;
如果(发送方==nil)
{
btn.tag=0;
}
对于(int i=0;i您需要设置图像属性,而不是ui按钮的backgroundImage
属性。
使用默认
图像属性和所选
属性
[btn setSelected:TRUE];
您正在打印的日志是否正确打印button.tag
NSLog(@“单击了选项卡栏%d”,btn.tag);我使用了下面的方法调用UIButton方法,如下所示:-
btn= [UIButton buttonWithType:UIButtonTypeCustom];
int j=i+1;
btn.frame = CGRectMake((j-1)*77, 0, 77, 44);
[btn setBackgroundImage:[UIImage imageNamed:@"bar.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"bar_hvr.png"] forState:UIControlStateSelected];
btn.selected=NO;
[btn addTarget:self action:@selector(yourButtonAction:) forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor = [UIColor clearColor];
btn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
btn.titleLabel.textColor = [UIColor whiteColor];
btn.tag = i;
[tabBarS addSubview:btn];
它的操作方法应该与发送方类似
-(IBAction)yourButtonAction:(id)sender
{
UIButton *btn = (UIButton*)sender;
if (![btn isSelected])
{
[btn setImage:[UIImage imageNamed:@"selected_fb_btn.png"] forState:UIControlStateNormal];
[btn setSelected:YES];
[self login];
}
else{
[btn setImage:[UIImage imageNamed:@"facebook.png"] forState:UIControlStateNormal];
[btn setSelected:NO];
}
}
编辑
您可以使用以下trik编程调用按钮动作事件:-
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];发件人值未正确输入我想是的。我怀疑btn持有其他按钮的实例不是所需的实例。尝试调试它。更改iAction而不是-(void)按钮标记:(id)发件人。在设置Select if(btn.selected)后检查按钮的状态你在哪里设置背景?是否已经创建并连接了btn
?我需要执行第一个按钮的选择过程需要通过编程完成?是因为发件人为零吗?@hacker使用自定义按钮代码查看此链接,并使用该代码代替你的:)而不是此-(iAction)YourButton操作:(id)发送者
我们可以假设像-(iAction)yourButtonAction:(UIButton*)发送者
也对吗?无需在本地创建一个按钮:)尝试精细编程按钮事件[btn SendActions ForControlEvents:UIControlEventTouchUpInside];您只需要强制转换它以避免编译器警告。只要sender
响应selected
方法,这不是问题的原因。