3

我有一个包含某些对象的 json 数组:名字、姓氏、唯一 ID。我能够解析它们并将它们保存在字典中,还可以检查它们是否为 NULL 条件。

我创建了一个表格,可以在其中显示名称。此外,我在每一行中也有一个按钮,并且我已经标记了它们。我想要的是,当我单击按钮时,我能够在控制台中看到从服务器获取的唯一 ID。我需要将此唯一 ID 传递给下一个视图,因为使用此唯一 ID 将帮助我在服务器上显示与该 ID 对应的视图。

点击这里看看我到目前为止做了什么

我通过将其添加到我的 viewDidLoad 方法进行了一些更改:

  for(NSDictionary *items in infos)
      {
          ....
          ....
         for(int i =0; i < len; i++)
          {
             ...
             ...
             ...


             for(NSDictionary *newItems in infoArray)
               {
                ...
                ...

                NSString *folks_IdRcv = [[items objectForKey:strr]objectForKey:@"folks_id"];
                NSLog(@"FolksID = %@", folks_IdRcv);

                NSString *folksIDString = [NSString stringWithFormat:@"%@", folks_IdRcv, nil];
                NSLog(@"folkid_display=%@", folksIDString);


                if((fName && lName && email_Id && number_id) && displayName && folksIDString != NULL)
                     {

                        ...
                        ...                            
                        [folksIDArray insertObject:folksIDString atIndex:ii];
                NSLog(@"FolksID String Name = %@", [folksIDArray objectAtIndex:(ii)]);
                ii++;
                                }
                              }
                           }
                        } 

NSMutableArray *nArray = [[NSMutableArray alloc]initWithCapacity:len];


for(int j =0; j<len ;j++)
   {

      ...
      ... 
      [nArray addObject:[folksIDArray objectAtIndex:j]];
      NSLog(@"FID Element=%@", nArray);
}

self.infos = mArray;   
[super viewDidLoad];
}

对于这个特定的代码,我得到以下响应:

FID Element=(
400386528950544,
162622322666106,
643171434889706
)

现在,我有一个表格视图,其中每一行都有一个按钮,并且我能够在每一行中显示名字和姓氏。我现在想要的是,每当我单击按钮时,该特定名称的唯一 ID 应该保存在标签中,以便我可以在按钮单击操作时将该 ID 发送到服务器。

请帮帮我。

4

4 回答 4

2

在这里,我假设您可以制作唯一 id 数组的数组,并且该数组应在 .h 文件中声明或应为类成员。比使用以下代码。

-(IBAction)buttonClicked1:(id *)sender{
  NSString *UIDString = [uidarray objectAtIndex:[sender tag]]; // uidarray is  unique id  array 
  NSLog(@"uid for particular button=%@", UIDString);// this will give you kid for button that you tapped or clicked.
}
于 2012-05-09T11:36:37.453 回答
1

我对您的要求有一个想法……在 TableView 委托方法中……

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
.............your another code........
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect frame = CGRectMake(0.0, 0.0, 14, 14);
    button.frame = frame;   // match the button's size with the image size

    [button setBackgroundImage:image forState:UIControlStateNormal];

    // set the button's target to this table view controller so we can interpret touch events and map that to a NSIndexSet
    [button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];
    button.backgroundColor = [UIColor clearColor];
    cell.accessoryView = button;    
    return cell;
}

粘贴此方法后...

- (void)checkButtonTapped:(id)sender event:(id)event
{
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:Yourtableview];
    NSIndexPath *indexPath = [Yourtableview indexPathForRowAtPoint: currentTouchPosition];
    if (indexPath != nil)
    {
        [self tableView: Yourtableview accessoryButtonTappedForRowWithIndexPath: indexPath];
    }
}

以及在tableview的accessoryButtonTappedForRowWithIndexPath Delegate方法中......

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{

       NSMutableDictionary *item = [self.arrTypes objectAtIndex:indexPath.row];//sel.arrTypes is Array Data..use your Data here and
        .......  do somthing here which you want  ......
}
于 2012-05-09T11:45:18.823 回答
1

标签是一种方式,另一种方式是发件人超级视图。参考下面的代码(不需要设置标签)

- (IBAction)clickedButton:(id)sender 
{

    UIButton *button = (UIButton *)sender;

    UITableViewCell *cell = (UITableViewCell *)button.superview;

    UITableView *tableView = (UITableView *)cell.superview;

    NSIndexPath *indexPath = [tableView indexPathForCell:cell];

     NSString* id = [Array objectAtIndex:indexPath.row];
}

如果您使用的是标签,请确保标签必须是唯一的。

于 2012-05-09T11:49:02.153 回答
0

用这个UIButton* btn......

btn.tag. 

当按下按钮时

UIButton *button = (UIButton*)sender;
thetatosendserver = button.tag
于 2012-05-09T11:24:29.067 回答