gpt4 book ai didi

iphone - 单击按钮时使用不同参数调用 api,并将其传递到 iPhone 中行索引路径的单元格

转载 作者:行者123 更新时间:2023-12-03 21:17:15 26 4
gpt4 key购买 nike

我有一个应用程序,其中有一个 Controller 类,其中包含一个 TableView 。在 Controller 中,我有一个搜索栏和 5 个按钮。当我第一次运行我的应用程序时,我希望第一个按钮保持选中状态。

单击按钮时,我将从服务器调用 JSON api,并根据从 JSON 返回的值,我想在 TableView 中显示。单击第二个按钮时,将调用相同的函数,但将不同的参数作为 id 传递给它。我已经完成了代码,但问题是,当应用程序第一次运行时,第一个按钮显示为选中状态,并且它的 api 被调用,但当我切换到下一个按钮时,我的表格 View 不会使用新值刷新。

我有 5 个按钮,已添加到我的 Controller 类中。当我第一次运行我的应用程序时,我希望第一个按钮保持选中状态,执行其操作并调用 api,当单击第二个按钮时,应执行第二个操作,依此类推,同样的操作应反射(reflect)在 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 设置为选定状态并执行其操作,但问题是当我单击第二个按钮时,第一个按钮的结果显示在表格 View 上,第二次单击第二个按钮时,其结果可见表格 View 。

最佳答案

你想做什么,正如我在你的问题中所理解的那样。我想告诉你三件事。

1)当您需要使用新数据刷新表格时,添加[yourtablview reloadData];

2)在调用按钮操作之前,根据您的类别为所有按钮设置不同的标签

3)按照以下方式使用IBAction

 -(IBAction)btnEntertainment:(id)sender // here i used action name `btnEntertainment`. you can use your action name.
{
int buttonidentifier = [sender tag];// this will give button tag so you can identify which button clicked or tapped and call you api your according to that like below.

if(buttonidentifier == 1)//this tag will give you button identification. For example you set tag 1 for `button1` than this is indicate that you first button is tapped or click.
{
// call first category api and do whatever you want do
}

else if(buttonidentifier == 2)//this tag will give you button identification. For example you set tag 2 for `button2` than this is indicate that you second button is tapped or click.
{
// call Second category api and do whatever you want do
}
}

>> 编辑添加内容

当您在viewdidload中创建按钮时,您已经设置了按钮标签。您不需要为每个按钮编写另一个操作,相同的操作将适用于所有按钮,并且它将识别哪个按钮被点击或使用按钮标签(buttonidentifier)单击,如我的代码所示。

希望这会对您有所帮助...

关于iphone - 单击按钮时使用不同参数调用 api,并将其传递到 iPhone 中行索引路径的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com