2017-02-06 2 views
1

Ich habe UIButton innerhalb einer tableviewCell, die ich von xib laden werde. Durch diese Schaltfläche klicken sollte es zur nächsten Ansicht gehen ... Ich Anruf geschrieben haben wieder für das ..performSegue innerhalb UIButton Rückruf funktioniert nicht

Hier ist mein Code in xib TableViewCell.h

typedef void(^CallBack)(UIButton *sender); 

@property (copy, nonatomic) CallBack callBack; 

TableViewCell.m

- (IBAction)buttonTapped:(id)sender { 
    if (_callBack) { 
    _callBack(sender); 
} 

In Viewcontroller

cell.callBack = ^(UIButton *sender) { 
    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil]; 
}; 

performSegue Linie ist bu schlagen t seine Einnahme einige Zeit zu treffen ... Warum

+1

probly müssen Sie das in GCD wickeln – GeneCode

+0

Müssen wir Dispatch_async in View-Controller verwenden? @GeneCode –

+0

Ich denke, sollte nur in Ihrem Rückruf sein. wickle nur performSegue ein. – GeneCode

Antwort

0

Einstellung auf NO von benutzerdefinierten UIButton UserInteractionEnabled und in UIView löst mein Problem .. Vielen Dank für Ihre Antwort ...

0

Try this:

@interface WACustomCell : UITableViewCell 

@property(readwrite,copy)void (^cellCallBackMethod)(NSInteger rowIndexPath); 

-(IBAction)buttonTappedFromCell:(id)sender; 

@end 

@implementation WACustomCell 

@synthesize cellCallBackMethod; 

-(IBAction)buttonTappedFromCell:(id)sender{ 

self.cellCallBackMethod(0); 

//any value can be given as we will retrieve this value from CellForRowAtIndex method 

} 

In-View-Controller

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

cel = .... 
cell.cellCallBackMethod = ^(NSInteger cellIndex) 

{ 

    [self cellButtonTappedFromCellWithIndex:cellIndex]; 

}; 

return cell; 
} 

-(void)cellButtonTappedFromCellWithIndex:(NSInteger)cellIndex 
{ 

    [self performSegueWithIdentifier:@"segueIdentifier" sender:nil]; 

} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    if ([[segue identifier]isEqualToString:@"segueIdentifier"]) 

    { 

     ViewController1 *vc = [segue destinationViewController]; 

    } 

} 
+0

können Sie diesen Code ausprobieren? –

+0

wie dies nur ich habe außer Passing Index Pfad zum Rückruf –

+0

jetzt Problem behoben oder nicht? –

Verwandte Themen