2012-09-26 12 views
19

私はボタンとテーブルを持っています。今私はtableviewの行を選択してボタンを押すたびに、その特定のボタンプレスイベントが発生するような方法でクリックしたいと思います。そのために、まず私はUITableViewでイベントをクリック

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *LabelCellIdentifier = @"cell"; 
UITableViewCell *cell; 
cell = [tableView dequeueReusableCellWithIdentifier:LabelCellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:LabelCellIdentifier]; 


} 

if (indexPath.row <= [_arrayMp3Link count]) { 

    cell.textLabel.text = [_arrayMp3Link objectAtIndex:indexPath.row]; 

    } 

// now tag each row 
NSInteger count = 1; 
for (NSInteger i = 0; i < indexPath.section; i++) { 
    count += [[tableView dataSource] tableView:tableView numberOfRowsInSection:i]; 
} 
count += indexPath.row; 
// dequeue, create and configure... 
cell.tag = count; 



return cell; 
} 

すなわち、各行にタグを与え、今私は、行を選択して、私のボタンを押すと、ボタンにイベントを置くことです。しかし、正しいものを得ることはできません。

(IBAction)doDownload:(id)sender { 
// to select first row 
if(cell.tag==1) 
{ 
    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
} 
+0

の名前です。ここで私の答えをチェックしてください:http://stackoverflow.com/a/12594183/1144632 – danielbeard

答えて

29

グローバルint変数を宣言 -

int rowNo; 

を次に今、あなたはindexNoを持ってdidSelectRowAtIndexPath:方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    rowNo = indexPath.row; 
} 

でそれに値を割り当てます。選択された行の

-(IBAction)doDownload:(id)sender 
{ 
    //Now compare this variable with 0 because first row index is 0. 
    if(rowNo == 0) 
    { 
     [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
    } 
} 
+0

ありがとう!すべての行と同じアクションが必要な場合は、私はインデックスのpath.sectionを使用する必要がありますか?ダウンロードは何ですか? – Christien

+0

あなたはいくつのセクションを持っていますか? – TheTiger

+0

1つだけ....... – Christien

5

tableViewの関数didSelectRowAtIndexPathを使用する必要があります。

この方法では、選択した行タグまたは保存するものを保存します。ボタンアクションでは、保存されたエンティティの値をチェックして何かを行います。

+0

k行を選択してボタンを押してください。使用する必要があるもの – Christien

+0

テーブル行を選択するとアクションが必要な場合は、それはより良いです、あなたはdidiSelectRowAtIndexPath関数内のセルのタグをチェックし、何をしたいのですか。しかし、あなたが選択とボタンを両方使用しなければならない場合、両方を使用してください。 – tausun

2
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if(indexPath.row==i) 
{//Perform whatever action you would like for whichever row number..i'm just using i as an int placeholder 
    [[UIApplication sharedApplication]openURL:[NSURLWithString:@"http://www.google.com"]]; 
} 

//Or you could perform the same action for all rows in a section 
if(indexPath.section==i) 
{ 
[[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"http://www.google.com"]]; 

} 
+0

yaありがとう男!しかし、私が別に与えた行とクリックボタンを選択するたびに私は欲しいです。 – Christien

+0

申し訳ありませんが、わかりません。ボタンと行をクリックすると同じことをしたいと言っていますか?または何をしようとしていますか? –

+0

thanx.I得ました。すべての行にタグを付けるために正しいコードを使用しているかどうかチェックしてください。 – Christien

3

indexPath.row、各行のインデックスである

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{}

あるのUITableViewのデータソース関数を使用。

+0

ya thanx mam!しかし、私は別に与えた行とクリックボタンを選択するたびに欲しい – Christien

+0

行を選択すると、ボタンも選択されますか?私は正しい? – KarenAnne

1
//use selectedrow to check the condition 

-(void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

        selectedrow=indexPath.row; 
    } 

     -(IBAction)doDownload:(id)sender { 
     // to select first row 
     if(selectedrow==1) 
     { 
      [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]]; 
     } 
+0

ありがとう!それは本当に私のために働く! – Christien

2

'-インタビュー-2.JPG' あなたはIBAction内の行を取得することができ、画像ファイル

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    ViewController *vc = [sb instantiateViewControllerWithIdentifier:@"viewc"]; 

    [self.navigationController pushViewController:vc animated:YES]; 
    [vc setImageName:@"the-interview-2.jpg"]; 
} 
関連する問題