我的JSON响应下拉列表:
{
"projects": [
{
"id": 8,
"name": "Andriod APP",
"identifier": "andriod-app",
"description": "",
"status": 1,
"is_public": true,
"created_on": "2015-06-29T11:54:23Z",
"updated_on": "2015-06-29T11:54:23Z"
},
],
"total_count": 8,
"offset": 0,
"limit": 25
}
我在表格视图单元格中有一个带有按钮和表格视图的下拉列表。我必须显示项目名称(要求)。如果我在表格视图中选择任何项目名称,它将显示在按钮上。我可以阅读项目名称。但我也需要阅读项目的ID。
如何设置和获取项目名称作为项目名称的隐藏值。
这是我的一段代码:用于在表格视图中显示项目名称
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableString * text;
text = [NSMutableString stringWithFormat:@"%@",[tmpdict objectForKeyedSubscript:projectname]];
cell.textLabel.text = text;
}
按钮操作以显示和隐藏表视图中的值:
- (IBAction)btnAction1:(id)sender {
NSString * projtitle = [(UIButton *) sender currentTitle];
NSLog(@ " %@" , projtitle);
if (self.tableView.hidden ==YES) {
self.tableView.hidden = NO;
}
else {
self.tableView.hidden = YES;
}
}
答案 0 :(得分:0)
由于您的ID类型是数字,因此可以将其设置为按钮的标记。
答案 1 :(得分:0)
如果您找到了Indexpath,那么您可以轻松地从中获取id,在代码下方
- (IBAction)btnAction1:(id)sender
{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:_friend_list_table];
NSIndexPath *indexPath = [table_name indexPathForRowAtPoint:buttonPosition];
NSString *proj_id=[NSString stringWithFormat:@"%@",[[arr objectAtIndex:indexpath.row] objectForkey:@"id"]];
}
注意: 你应该将数据存储在数组中。
response=
{
"projects": [
{
"id": 8,
"name": "Andriod APP",
"identifier": "andriod-app",
"description": "",
"status": 1,
"is_public": true,
"created_on": "2015-06-29T11:54:23Z",
"updated_on": "2015-06-29T11:54:23Z"
},
],
"total_count": 8,
"offset": 0,
"limit": 25
}
第1步: 存储在json对NSDictionary或NSArray的响应之上。在这里我将它存储到NSArray。
Ex:
NSArray *response_arr=[response objectForKey:@"projects"];
第2步: 使用此response_arr加载tableview
例如:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView == self.tableView1)
{ return [response_arr count];}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
if(tableView == self.tableView1)
{
NSMutableString * text;
text = [NSMutableString stringWithFormat:@"%@",[[response_arr objectAtIndex:indexpath.row] objectForKey:@"name"]];
cell.textLabel.text = text;
}
}
第3步: 从DidSelect你可以得到数据,我把它存储到字典中。你应该全局声明它,
例如:
NSMutableDictionary *data_dic;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView==self.tableView1)
{
[self.btnoutlet1 setTitle:[[response_arr objectAtIndex:indexpath.row] objectForKey:@"name"] forState:UIControlStateNormal];
self.tableView1.hidden = YES;
data_dic;=[[NSMutableDictionary alloc]init];
[data_dic setObject:[response_arr objectAtIndex:indexpath.row] forKey:@"data"];
}
}
第4步: 然后,您可以在按钮操作中从字典中获取数据。
实施例
- (IBAction)btnAction1:(id)sender
{
NSString * projtitle = [(UIButton *) sender currentTitle];
NSLog(@ " %@" , projtitle);
NSString *projid= [data_dic objectForKey:@"id"];
NSLog(@"Id=%@",projid);
if (self.tableView.hidden ==YES) {
self.tableView.hidden = NO;
}
else {
self.tableView.hidden = YES;
}
}
答案 2 :(得分:0)
我建议你使用按钮的辅助功能标识符, 您可以使用与获取按钮标题相同的方式获取标识符。用于设置辅助功能的代码标识符将如下所示。
[yourButton setAccessibilityIdentifier:@"Your project_id"];