2012-09-26 47 views
19

Tôi có một nút và Bảng. Bây giờ tôi muốn nhấp vào theo cách như vậy Bất cứ khi nào tôi chọn bất kỳ hàng nào trong tableview và nhấn nút, sự kiện nhấn nút cụ thể đó sẽ xảy ra. Cho rằng, trước hết tôi đã cung cấp cho thẻ để mỗi hàng tức làNhấp vào Sự kiện trong 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; 
} 

và bây giờ trong việc đưa sự kiện trong nút khi tôi chọn hàng và nhấn nút của tôi. Nhưng không nhận được những điều đúng.

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

Bạn có thể nhận được hàng trong IBAction. Kiểm tra câu trả lời của tôi ở đây: http://stackoverflow.com/a/12594183/1144632 – danielbeard

Trả lời

29

Khai báo một biến int trên toàn cầu -

int rowNo; 

Sau đó gán giá trị cho nó trong didSelectRowAtIndexPath: phương pháp

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

Bây giờ bạn có indexNo. của hàng đã chọn.

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

ok cảm ơn! và nếu muốn cùng một hành động với mỗi hàng .. tôi cần phải sử dụng chỉ số path.section ?? và tải xuống cái gì? – Christien

+0

Bạn có bao nhiêu phần? – TheTiger

+0

chỉ một ....... – Christien

5

Bạn phải sử dụng hàm didSelectRowAtIndexPath của tableView.

trong phương pháp đó bạn lưu thẻ hàng đã chọn hoặc bất kỳ thứ gì bạn muốn lưu. Và trong thao tác nút, hãy kiểm tra giá trị của thực thể đã lưu và thực hiện bất kỳ điều gì.

+0

k nhưng để chọn một hàng và nhấn nút mà tôi cần phải được sử dụng – Christien

+0

nếu bạn muốn hành động khi bạn chọn hàng trong bảng, đó là tốt hơn, sau đó bạn có thể kiểm tra các thẻ của tế bào bên trong didiSelectRowAtIndexPath func và làm những gì u want.But nếu u phải sử dụng lựa chọn và nút bấm cả hai sau đó sử dụng cả hai. – 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 thanx man! nhưng tôi muốn bất cứ khi nào tôi chọn một hàng và nút bấm mà tôi đã đưa ra một cách riêng biệt. – Christien

+0

Xin lỗi, tôi không hiểu. Bạn đang nói rằng bạn muốn có thể làm điều tương tự nếu bạn nhấp vào nút và hàng? Hay bạn đang cố làm gì? –

+0

thanx.I đã nhận nó .. hãy kiểm tra xem tôi đã sử dụng đúng mã để gắn thẻ mọi hàng hay chưa. – Christien

3

Sử dụng chức năng nguồn dữ liệu của UITableView đó là

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

mà indexPath.row là chỉ số của mỗi hàng.

+0

ya thanx mam! nhưng tôi muốn bất cứ khi nào tôi chọn một hàng và nhấp vào nút mà tôi đã đưa ra một cách riêng biệt – Christien

+0

Khi bạn chọn một hàng, bạn cũng muốn nút được chọn? Tôi có đúng không? – 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

cảm ơn người đàn ông! điều đó thực sự hiệu quả đối với tôi! – Christien

2

'the-phỏng vấn-2.jpg' là tên của một tập tin ảnh

-(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"]; 
} 
Các vấn đề liên quan