Xcode 4 UIButton segue推送到Table View Controller

时间:2012-03-07 03:09:34

标签: objective-c ios xcode ios5 storyboard

现在我的故事板中有一个UIButton设置,可以推送到Table View Controller。这是按预期工作的。我想要做的是让UIButton加载一个xml文件,当它被按下时仍然移动到表视图控制器上。

我该怎么做?我已经有了XML代码的代码,这是代码将去哪里以及如何为新的ViewController子类UIViewController添加.h和.m文件的问题。如何将这些文件链接到我在故事板中创建的UIButton

2 个答案:

答案 0 :(得分:5)

将按钮连接拖到新视图,然后选择自定义Segue而不是Push或Modal。

enter image description here

将新的自定义Segue的类更改为“mySegueClass1”或者您想要调用它。

enter image description here

创建一个新的Objective-C类,其名称与刚分配给自定义segue的名称相同。

enter image description here 然后在mySegueClass1.m文件中添加以下代码,并添加您想要的其他操作-(void)perform

-(void)perform{
    UIViewController *dst = [self destinationViewController];
    UIViewController *src = [self sourceViewController];
    [dst viewWillAppear:NO];
    [dst viewDidAppear:NO];


    [src.view addSubview:dst.view];

    CGRect original = dst.view.frame;

    dst.view.frame = CGRectMake(dst.view.frame.origin.x, 0-dst.view.frame.size.height, dst.view.frame.size.width, dst.view.frame.size.height);

    [UIView beginAnimations:nil context:nil];
    dst.view.frame = CGRectMake(original.origin.x, original.origin.y, original.size.height, original.size.width);
    [UIView commitAnimations];

    [self performSelector:@selector(animationDone:) withObject:dst afterDelay:0.2f];
}
- (void)animationDone:(id)vc{
    UIViewController *dst = (UIViewController*)vc;
    UINavigationController *nav = [[self sourceViewController] navigationController];
    [nav popViewControllerAnimated:NO];
    [nav pushViewController:dst animated:NO];
}

答案 1 :(得分:3)

有一种方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    //You can access the tableviewcontroller using segue.destinationViewController
    //Maybe you want to set your model here.
}

在制作segue之前调用它。在这里,您可以进行所需的所有设置。您应该将此方法放在执行segue的控制器内,而不是接收它的人。 (事实上​​,xcode可能已经为你准备了这段代码)。