2012-09-26 43 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

你可以在IBAction爲該行的名稱。看看我的答案在這裏:http://stackoverflow.com/a/12594183/1144632 – danielbeard

回答

29

聲明一個變量int全球 -

int rowNo; 

然後將值分配給它didSelectRowAtIndexPath:方法

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

現在你有indexNo。的選定行。

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

只有一個....... – Christien

5

您必須使用tableView的函數didSelectRowAtIndexPath方法。

在該方法中,您保存選定的行標記或任何想要保存的內容。在按鈕操作中,檢查保存的實體的值並執行任何操作。

+0

k但要選擇一行,並按下按鈕我需要使用 – Christien

+0

如果你想要的行動,當你選擇錶行,這是更好的,那麼你可以檢查didiSelectRowAtIndexPath func中的單元格的標籤,並做你想做的。但是,如果你必須使用選擇和按鈕按兩個,然後使用兩者。 – 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

亞thanx男人!但我希望每當我選擇一行並單擊我分別給出的按鈕時。 – Christien

+0

對不起,我不明白。你是否說你想要能夠做同樣的事情,如果你點擊按鈕和行?或者你想要做什麼? –

+0

thanx.I知道了..請檢查我是否使用正確的代碼來標記每一行。 – Christien

3

使用的UITableView的數據源功能,該功能

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

這indexPath.row是各行的索引。

+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' 是一個圖像文件

-(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"]; 
}