我有一个应用程序,其中有一个控制器类,其中包含一个表视图。在控制器中,我有一个搜索栏和 5 个按钮。当我第一次运行我的应用程序时,我希望第一个按钮保持选中状态。
当单击按钮时,我正在从服务器调用 JSON api,并根据从 JSON 返回的值,我想在我的 tableview 中显示。单击第二个按钮时,将调用相同的函数,但将不同的参数作为 id 传递给它。我已经完成了代码,但是当应用程序第一次运行时出现问题,第一个按钮被选中并且它的 api 被调用但是当我切换到下一个按钮时,我的 tableview 没有用新值刷新。
我有 5 个按钮已添加到我的控制器类中。当我第一次运行我的应用程序时,我希望第一个按钮保持选中状态并执行其操作并调用 api,当单击第二个按钮时,应该执行第二个操作,依此类推,同样应该反映在 tableview 上单击特定按钮时的结果。
这是我的代码:
- (void)viewDidLoad {
category = [[ResultJson alloc] init];
dealsArray = [[NSMutableArray alloc] init];
[self.view bringSubviewToFront:btnAll];
[btnAll setBackgroundImage:[UIImage imageNamed:@"icon-1-active.png"] forState:UIControlStateNormal];
if ([[btnAll backgroundImageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-1-active.png"]])
{
[self btnAll];
}
[super viewDidLoad];
}
-(IBAction)btnAll
{
[self.tblView reloadData];
NSLog(@"Done");
[self.view bringSubviewToFront:btnAll];
if (category.newArray)
{
[category.newArray release];
}
category.newArray = [[NSMutableArray alloc] init];
[btnAll setUserInteractionEnabled:YES];
[btnAll setBackgroundImage:[UIImage imageNamed:@"icon-1-active.png"] forState:UIControlStateNormal];
[btnEntertainment setBackgroundImage:nil forState:UIControlStateNormal];
[btnRetail setBackgroundImage:nil forState:UIControlStateNormal];
[btnServices setBackgroundImage:nil forState:UIControlStateNormal];
[btnFood setBackgroundImage:nil forState:UIControlStateNormal];
[btnHealthBeauty setBackgroundImage:nil forState:UIControlStateNormal];
[category GetDetails:1];
[dealsArray addObjectsFromArray:category.newArray];
btnAll.tag = 0;
}
-(IBAction)btnEntertainment
{
[self.tblView reloadData];
[self.view bringSubviewToFront:btnEntertainment];
if (category.newArray)
{
[category.newArray release];
}
category.newArray = [[NSMutableArray alloc]init];
[btnEntertainment setBackgroundImage:[UIImage imageNamed:@"icon-2-active.png"] forState:UIControlStateNormal];
[btnAll setBackgroundImage:nil forState:UIControlStateNormal];
[btnRetail setBackgroundImage:nil forState:UIControlStateNormal];
[btnHealthBeauty setBackgroundImage:nil forState:UIControlStateNormal];
[btnServices setBackgroundImage:nil forState:UIControlStateNormal];
[btnFood setBackgroundImage:nil forState:UIControlStateNormal];
[category GetDetails:2];
[dealsArray addObjectsFromArray:category.newArray];
btnEntertainment.tag = 1;
}
这是我的第一个 2 按钮操作,我通过将 id 作为参数传递给 GetDetails api 方法来调用它。最初在 ViewDidload 中,我将我的第一个 btnAll 设置为选中并执行其操作,但问题是当我单击第二个按钮时,第一个按钮的结果显示在 tableview 上,第二次单击第二个按钮其结果在表视图。