如何在Tableview中设置和获取单元格中的隐藏值

时间:2015-12-24 07:41:10

标签: ios objective-c uitableview

我的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;
    }
}

3 个答案:

答案 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"];