Обрабатывать событие кнопки в UITableviewcell - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь получить число из массива и сохранить его в кнопке в ячейке UITableview.Когда я нажму кнопку, я смогу получить номер.Какой правильный способ получить информацию от отправителя в событии нажатия кнопки

Это то, что я пытался.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil )
{
    UIButton *button = [[[UIButton alloc]init]autorelease];
    CGRect frame = CGRectMake(180, 10, 33, 33);
    button.frame = frame;
    button.tag = 1001;

    UIImage *image = [[[UIImage alloc]init]autorelease];
    image = [UIImage imageNamed:@"icon.png"];
    [button setBackgroundImage:image forState:UIControlStateNormal];

    [button addTarget:self action:@selector(onIconTapped)  forControlEvents:UIControlEventTouchUpInside];
    button.backgroundColor = [UIColor clearColor];
    [button setHidden:YES];
    cell.accessoryView = button;  

}

int myContactID = contact.contactID;
NSLog(@"My No.  %d", myContactID);
NSNumber *mySelectedNumber = [NSNumber numberWithInt:myContactID];

UIButton *myButton = (UIButton *)[cell.accessoryView viewWithTag:1001];
for(int i = 0; i< [myContactsArray count]; i++){
    if([[[myContactsArray objectAtIndex:i]valueForKey:@"RecordID"] isEqualToNumber:mySelectedNumber]){

        [myButton setHidden:NO];
        NSString *myString;
        myString = [[myContactsArray objectAtIndex:i]valueForKey:@"MYNumber"];
        [myButton setTitle:myString forState:UIControlStateNormal];
        myButton.titleLabel.font = [UIFont systemFontOfSize:0];
        NSLog(@"my number %@", myString);
        NSLog(@"Button tag %@", myButton.currentTitle);
        break;
    }
    else{
       [myButton setHidden:YES];
    }
}
}



-(void)onIconTapped:(id)sender{
}

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012
-(void)onIconTapped:(id)sender{

  if (sender.tag == 1001){
  NSString *title = sender.currentTitle;

  NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
  [formatter setNumberStyle:NSNumberFormatterDecimalStyle];

  NSNumber *titleNumber = [numberFormatter numberFromString:title]; 
  }
}
2 голосов
/ 17 февраля 2012

Этот подход взят из iOS Recipes (Matt Drance): вы можете получить ячейку, преобразовав источник кнопки в tableView (convertPoint:toView:), а затем вызвать

[[self tableView] indexPathForRowAtPoint: convertedPoint];
0 голосов
/ 17 февраля 2012

1.

[button addTarget:self action:@selector(onIconTapped:) `enter code here`forControlEvents:UIControlEventTouchUpInside];

2

myString = [[myContactsArray objectAtIndex:i]valueForKey:@"MYNumber"];
button.tag = i;`

3.

-(void)onIconTapped:(id)sender{
Contact *contact = [myContactsArray objectAtIndex:sender.tag];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...