2013-11-25 6 views
2

фона: У меня есть таблица 1 и таблица 2 в приложении, вид старта таблица 1,Как настроить анимацию (segue) между двумя видами таблицы в iOS?

Что для реализации: пользователя проведите палец вправо, затем просмотр слайдов слева направо и показывает таблицу 2

Мой метод:

  1. Я попытался добавить SEGUE между таблицей 1 и таблицей 2, и с помощью нажимного типа, проблема, таблица 2 всегда сдвигайте справа налево, поэтому я отказываюсь от этого метода.

  2. настроить анимацию: я добавил настраиваемый сегмент, и действительно, я вижу переход слева направо, когда пользователь садится вправо. Проблема в том, что таблица 2 просто показывает один раз и становится черным экраном.

Мой заказной код Segue, как показано ниже:


    UIViewController* source = (UIViewController *)self.sourceViewController; 
    UIViewController* destination = (UIViewController *)self.destinationViewController; 
    CGRect sourceFrame = source.view.frame; 
    sourceFrame.origin.x = sourceFrame.size.width; 

    CGRect destFrame = destination.view.frame; 
    destFrame.origin.x = -destination.view.frame.size.width; 
    destination.view.frame = destFrame; 

    destFrame.origin.x = 0; 

    [source.view.superview addSubview:destination.view]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         source.view.frame = sourceFrame; 
         destination.view.frame = destFrame; 
        } 
        completion:^(BOOL finished) { 
         UIWindow *window = source.view.window; 
         [window setRootViewController:destination]; 
        }]; 

Я подозреваю, что это связано с кодом завершения: окно setRootViewController: назначения, так как таблица 1 и 2 используют UITableViewController вместо uiviewcontroller, Я попытался изменить uiviewcontroller в вышеприведенном коде на uitableviewcontroller, но он все еще не работает.

Любое тело знает, как это решить? Исходный код можно скачать здесь http://d.pr/f/tAkc

+0

Я думаю, что ваша проблема связана с вашим вторым столомView. У вас раскадровка? Покажите свой код для второго tableView (viewDidLoad) ... – Mayo323

+0

, второй вид таблицы отображается правильно, если нет настроенного segue, вы можете найти исходный код из http://d.pr/f/tAkc, ​​который включает в себя все код, посмотрите, спасибо –

ответ

0

Я сам нашел ответ: Решение удаляет навигационный контроллер в исходном коде.

Я добавил навигационный контроллер в начале из-за использования push segues (проведите влево/вправо назад/вперед). Когда я пытаюсь настроить анимацию segue, контроллер навигации все еще там.

В любом случае, вот конечный исходный код http://d.pr/f/ewOa, вы можете прокручивать влево/вправо от вида таблицы 1 до 2 и без сбоев.

+0

ссылка не работает –

0

Так что извините за мой ответ раньше, но я не могу оставлять комментарии с моей фактической репутацией.

Проблема с черным взглядом после того, как вы нажмете этот вид на другой, находится в вашем сегменте.

попытаться удалить этот код:

completion:^(BOOL finished) { 
        UIWindow *window = source.view.window; 
        [window setRootViewController:destination]; 

Если я удалить его, переход завершен и второй таблицы по-прежнему есть, но другая проблема состоит в том, что вы не можете красть назад к первой таблице.

+0

Да, точно.Я попытался удалить это раньше, а затем каждый раз, когда я сажусь назад, он падает :( –

+0

Я просто пробовал закладки, которые и на этом приложении кода становятся черными. Но я не видел код для прокрутки назад. Он должен быть реализован в файле tableView2.m – Mayo323

+0

Привет, Майо, я приложил новый исходный код с прокруткой назад в tableview 2: http://d.pr/f/YUqW, и, как мы и ожидали, он падает каждый раз. Следует отметить, что если вы меняете tableview 1 и 2 до нормального uiview 1 и 2, метод, который мы пробовали, отлично работает и работает хорошо. Я почесал голову и до сих пор не знаю причину первоздания –

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