精灵效应后调用segue

时间:2014-01-13 23:50:30

标签: ios objective-c segue

我是目标C的新手,我正在努力通过做一些教程来加快速度。我现在正在使用来自Ciechan / BCGenieEffect的精灵效果。我想我理解它的实现,因为它似乎对我有用,但我有一个问题,我怎么能在动画结束后触发一个segue。

我使用的代码如下:

- (void) genieToRect: (CGRect)rect edge: (BCRectEdge) edge
{

NSTimeInterval duration = 0.97;


CGRect endRect = CGRectInset(rect, 5.0, 5.0);

[self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop) {
    button.enabled = NO;
}];

if (self.viewIsIn) {
    [self.draggedView genieOutTransitionWithDuration:duration startRect:endRect startEdge:edge completion:^{
        self.draggedView.userInteractionEnabled = YES;
        [self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop) {
            button.enabled = YES;
        }];
    }];
} else {
    self.draggedView.userInteractionEnabled = NO;
    [self.draggedView genieInTransitionWithDuration:duration destinationRect:endRect destinationEdge:edge completion:
     ^{
         [self.buttons enumerateObjectsUsingBlock:^(UIButton *button, NSUInteger idx, BOOL *stop) {
             button.enabled = YES;
         }];}];
}

self.viewIsIn = ! self.viewIsIn;
}

我按下一个按钮来调用动画:

- (IBAction)leftButtonTapped:(UIButton *)sender
{

[self genieToRect:sender.frame edge:BCRectEdgeTop]; 

}

那里的一切都很好,但现在,我希望,当动画结束时,调用一个segue移动到下一个视图(就像Apple在点击垃圾邮件后在邮件中一样 - 一旦邮件到达垃圾,观点改变)

我试图在按钮方法中调用一个方法,如下所示:

[leftButton addTarget:self action:@selector(prepareForSegue:sender:) forControlEvents:UIControlEventTouchUpInside];

然后我添加了这样的方法:

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

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

不幸的是,它不起作用......

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

performSegueWithIdentifier:sender会致电prepareForSegue:identifier。如果你有事可做(比如将信息传递到segue末尾的下一个ViewController),你可以将代码放在prepareForSegue:identifier
因此,请移除performSegueWithIdentifier:sender中的prepareForSegue:identifier

要在动画后执行segue,请将其放入块中。在这里,您有...completion:^{}。你把你要完成的事情放在那里。请拨打performSegueWithIdentifier:sender