Xcode 4 UIButton segue push к контроллеру табличного представления - PullRequest
2 голосов
/ 07 марта 2012

Прямо сейчас у меня есть расстановка UIButton в моей раскадровке, которая выдвигается к контроллеру табличного представления. Это работает, как ожидалось. Я пытаюсь сделать так, чтобы UIButton загружал XML-файл, когда он был нажат, и все еще перемещался в контроллер табличного представления.

Как я могу это сделать? У меня уже есть код фрагментов XML, вопрос в том, куда пойдет код и как я добавлю файлы .h и .m для нового подкласса ViewController UIViewController. Как мне связать эти файлы с UIButton, который я создал в раскадровке?

Ответы [ 2 ]

5 голосов
/ 07 марта 2012

Перетащите подключение кнопки в новый вид и выберите пользовательский Segue вместо Push или Modal.

enter image description here

Измените новый пользовательский класс Segue на «mySegueClass1» или любой другой типхотелось бы позвонить.

enter image description here

Создайте новый класс Objective C с тем же именем, которое вы только что присвоили пользовательскому переходу.

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];
}
3 голосов
/ 07 марта 2012

Есть метод:

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

Это называется до того, как будет сделан переход. Здесь вы можете выполнить все необходимые настройки. Вы должны поместить этот метод в контроллер, который выполняет переход, а не тот, который его получает. (На самом деле, вероятно, xcode уже поставил этот кусок кода для вас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...