内部にテーブルビューで構成されるコントローラークラスがあるアプリケーションがあります。コントローラーには、検索バーと 5 つのボタンがあります。初めてアプリケーションを実行するとき、最初のボタンを選択したままにしておきたいです。
ボタンをクリックすると、サーバーから JSON API が呼び出され、JSON から返された値に応じて、テーブルビューに表示したいと考えています。2 番目のボタンをクリックすると、同じ関数が呼び出されますが、id として異なるパラメーターが渡されます。私はコードを実行しましたが、アプリケーションを初めて実行したときに最初のボタンが選択されて表示され、API が呼び出されたときに問題が発生しましたが、次のボタンに切り替えると、テーブルビューが新しい値で更新されません。
コントローラー クラスに追加した 5 つのボタンがあります。アプリケーションを初めて実行するときは、最初のボタンを選択したままにし、そのアクションを実行して API を呼び出し、2 番目のボタンをクリックすると 2 番目のアクションが実行され、同じことがテーブルビューに反映される必要があります。特定のボタンがクリックされたときの結果について。
これは私のコードです:
- (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;
}
これは、ID をパラメーターとして渡して GetDetails API メソッドを呼び出す最初の 2 つのボタン アクションです。最初にViewDidloadで最初のbtnAllを選択済みとして設定し、そのアクションを実行していますが、問題は、2番目のボタンをクリックすると最初のボタンの結果がテーブルビューに表示され、2番目のボタンをクリックするとその結果が表示されることですテーブルビュー。