2014-12-04 5 views
0

Предположим, что у меня есть элемент управления UIButton, и я применил метод @IBAction на клик и перейдите к нему. Гарантировано ли, что метод щелчка будет вызываться до перерыва?UIButton и порядок IBAction и segue

Заранее спасибо.

+0

Я думаю, что да, но это неясно где-то. Но что вы хотите сделать? – hoya21

ответ

3

ли это, что это будет работать идеально в вашем случае ..

В своем первом ViewController.h создать свойство для хранения indexPath

@property (nonatomic,strong) NSIndexPath *indexPath; 

В вашем втором ViewController.h создать свойство для хранения indexPath

@property (nonatomic,strong) NSIndexPath *indexPath; 

Теперь у вас первый файл ViewController.m

Забудьте IBAction сейчас напиши этот селектор в вашем cellForRow

[cell.btnOnCell addTarget:self action:@selector(btnAction:event:) forControlEvents:UIControlEventTouchUpInside]; 

Запись Этот метод

-(IBAction)btnAction: (UIButton *)sender event:(id)event 
{ 
    NSSet *touches = [event allTouches]; 
    UITouch *touch = [touches anyObject]; 
    CGPoint currentTouchPosition = [touch locationInView:self.tblView]; 
    self.indexPath = [self.tblView indexPathForRowAtPoint:currentTouchPosition]; 
    NSLog(@"%li",(long)self.indexPath.row); 

    [self performSegueWithIdentifier:@"segueIdToYourSecondVC" sender:self]; 
} 

Нет записи этого метода (этот метод будет вызывать после performSegueWithIdentifier) ​​

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"segueIdToYourSecondVC"]) 
    { 
     // Get reference to the destination view controller 
     YourSecondViewController *vc = [segue destinationViewController]; 
     vc.indexPath=self.indexPath; 

    } 
} 

спасибо ..Надеюсь, что это поможет вам.

+0

Мне не нравится программно вызывать такие функции, как 'performSegueWithIdentifier' и предпочитает делать это через раскадровку – FrozenHeart

Смежные вопросы