2012-09-26 14 views
19

Ich habe eine Schaltfläche und Tabelle. Jetzt möchte ich so klicken, dass, wenn ich irgendeine Reihe in tableview auswähle und die Taste drücke, würde dieses spezielle Knopfdruckereignis geschehen. Dafür erstens habe ich geben Tag zu jeder Zeile d.hKlicken Ereignis in 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; 
} 

und jetzt Ereignisses in-Taste, wenn ich die Zeile aus und drücken Sie meine Taste bei der Umsetzung. Aber nicht die richtigen Dinge zu bekommen.

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

Sie können die Zeile in der IBAction bekommen. Schauen Sie sich meine Antwort hier: http://stackoverflow.com/a/12594183/1144632 – danielbeard

Antwort

29

eine int Variable global deklarieren -

int rowNo; 

Dann Wert zuweisen in didSelectRowAtIndexPath: Methode, um es

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

Jetzt haben Sie die indexNo. der ausgewählten Zeile.

-(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 danke! und wenn ich dieselbe Aktion mit jeder Zeile haben möchte..do muss ich index path.section benutzen ?? und was in download? – Christien

+0

Wie viele Abschnitte hast du ??? – TheTiger

+0

nur ein ....... – Christien

5

Sie müssen die Funktion didSelectRowAtIndexPath-Methode von tableView verwenden.

In dieser Methode speichern Sie die ausgewählte Zeile Tag oder was auch immer Sie speichern möchten.und in der Schaltfläche Aktion überprüfen Sie den Wert der gespeicherten Einheit und alles tun.

+0

k sondern um eine Zeile auszuwählen und Taste zu drücken, die Sache, die ich brauche, um – Christien

+0

verwendet werden, wenn Sie die Aktion möchten, wenn Sie die Tabellenzeile auswählen, was ist besser, dann können Sie das Tag der Zelle in der Funktion DidiSelectRowAtIndexPath überprüfen und tun, was Sie wollen.But, wenn Sie die Auswahl und drücken Sie beide, dann beide verwenden müssen. – 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 danke Mann! aber ich will, wann immer ich eine Reihe auswähle und auf die Taste klicke, die ich getrennt angegeben habe. – Christien

+0

Sorry, ich verstehe nicht. Willst du damit sagen, dass du dasselbe tun willst, wenn du auf den Knopf und die Zeile klickst? Oder was versuchst du zu tun? –

+0

thanx.Ich habe es ... bitte überprüfen, ob ich den richtigen Code verwendet habe, um jede Zeile zu markieren. – Christien

3

die Funktion der Datenquelle UITableView Verwenden der

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

ist die indexPath.row jeder Index der Zeile ist.

+0

ya danke mam! aber ich will, wenn ich eine Zeile und klicken auszuwählen, die ich gegeben habe, separat – Christien

+0

Wenn Sie eine Zeile auswählen, Sie wollen, dass die Taste auch ausgewählt werden? Habe ich recht? – 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

danke mann! das funktioniert wirklich für mich! – Christien

2

'the-Interview-2.jpg' ist der Name einer Bilddatei

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