我是iPhone应用程序开发的新手。在我的应用程序中,我正在使用tableview。在tableview中,我使用了两个uibutton,一个为白色,另一个为灰色,如果我单击灰色按钮,则应更改为白色,另一个按钮应同时更改为灰色。
这是我的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ExampleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell=nil;
if(cell == nil)
{
cell = [[ExampleCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
if(indexPath.row == 0)
{
postbtn = [UIButton buttonWithType:UIButtonTypeCustom];
[postbtn setFrame:CGRectMake(0, 205, 160, 34)];
[postbtn setBackgroundColor:[UIColor whiteColor]];
[postbtn setTitle:[NSString stringWithFormat:@"%@ POST",[AppDelegate.profileDic objectForKey:@"posts"]] forState:UIControlStateNormal];
[postbtn.titleLabel setFont:[UIFont fontWithName:@"Verdana-Bold" size:10]];
[postbtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[postbtn setTag:1001];
[postbtn addTarget:self action:@selector(reloadAction:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:postbtn];
likebtn = [UIButton buttonWithType:UIButtonTypeCustom];
[likebtn setFrame:CGRectMake(160, 205, 160, 34)];
[likebtn setBackgroundColor:[UIColor lightGrayColor]];
[likebtn setTitle:[NSString stringWithFormat:@"%@ LIKE",[AppDelegate.profileDic objectForKey:@"likes"]] forState:UIControlStateNormal];
[likebtn.titleLabel setFont:[UIFont fontWithName:@"Verdana-Bold" size:10]];
[likebtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[likebtn setTag:1002];
[likebtn addTarget:self action:@selector(reloadAction:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:likebtn];
}
)};
-(void)reloadAction:(id)sender
{
if ([sender tag] == 1001)
{
[postbtn setBackgroundColor:[UIColor whiteColor]];
[likebtn setBackgroundColor:[UIColor lightGrayColor]];
AppDelegate.selectedTab=1;
[profiletableview reloadData];
}
if ([sender tag] == 1002)
{
[postbtn setBackgroundColor:[UIColor lightGrayColor]];
[likebtn setBackgroundColor:[UIColor whiteColor]];
AppDelegate.selectedTab=2;
[self likewebservice];
[profiletableview reloadData];
}
}
有什么办法可以改变uibutton的背景颜色。
最佳答案
问题在于,按下按钮后,您将立即通过以下方式重新加载表:
[profiletableview reloadData];
在您的
reloadAction:
方法中。这样,您只是将颜色重置为最初在tableView:cellForRowAtIndexPath:
中定义的颜色。取出那条线,它应该可以工作。编辑:
并且,如果您需要能够重新加载表中的数据,则可能不应该在
tableView:cellForRowAtIndexPath:
方法中初始化UIButton(或者,至少在第一次加载之后,您不应重复初始化UIButton)。您最好在viewDidLoad方法中初始化UIButton,以便在加载表之前对其进行初始化,然后(如已完成)在tableView:cellForRowAtIndexPath:
期间将UIButtons添加到单元格,并在<。我可能是错的,但在这种情况下,您可能仍然绝对不需要在reloadAction:
期间重新加载表,因为您可以直接更改按钮,也可以使用相同的方法直接更改按钮标题。但是,通常可以选择重新加载表格而不弄乱按钮,这是很好的选择。编辑#2:
另外,如果该行保持静态,则可以使用reloadRowsAtIndexPaths:withRowAnimation仅重新加载必要的行,或者,如KIDdAe所述,进行全表重新加载,但仅在cell == nil时才将按钮添加到该单元格。
关于ios - 如何在iPhone的单击操作中更改两个uibutton的背景颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20638512/