2012-02-17 14 views
0

配列から数値を取得し、それをUITableviewセルのボタンに格納しようとしています。私がボタンをタップすると、番号を取得できるはずです。ボタンのクリックイベントで送信者から情報を取得する正しい方法は何ですか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

編集: - (ボイド)がonIconTapped:(ID)、送信者{UIButton *ボタン=(UIButton *)差出人。 if(button.tag == 1001){//何かをする} –

2

このアプローチでは、iOSのレシピ(マット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]; 

}