我有一个带有某些对象的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发送到服务器。
请帮帮我。
答案 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