2012-02-17 5 views
0

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

Это то, что я пробовал.

- (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{ 
} 

ответ

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

Edit: - (Недействительными) onIconTapped: (идентификатор) отправитель {UIButton * Кнопка = отправитель (UIButton *); if (button.tag == 1001) {// делать вещи} –

2

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

[[self tableView] indexPathForRowAtPoint: convertedPoint]; 
0

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

} 
Смежные вопросы