设置带变量的按钮标签

时间:2012-05-09 11:20:02

标签: iphone objective-c ios

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

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

Click here to see what I have done so far

我通过将其添加到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 个答案:

答案 0 :(得分: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.
}

希望,这会对你有帮助..

答案 1 :(得分: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  ......
}

答案 2 :(得分:1)

标签是另一种方式是发件人superview。请参阅以下代码(不需要设置标签)

- (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];
}

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

答案 3 :(得分:0)

使用此UIButton* btn .....

btn.tag. 

按下按钮时

UIButton *button = (UIButton*)sender;
thetatosendserver = button.tag