2013-05-07 3 views
1

Я хочу обновить UITableView с помощью прокрутки UISwipeGestureRecognizer ... и заставить его выглядеть так, как будто он сдвигается справа (или слева), а затем просто обновляет CURRENT UITableView данные с новыми данными.Как проведите по экрану с помощью UISwipeGestureRecognizer, чтобы вставить и обновить SAME uitableview

ОК ... здесь подробнее. У меня есть UITableView внутри UINavigationController. В этой таблице приведены данные, относящиеся к дате - в основном, такие вещи, как заметки на сегодня, время и даты встреч и т. Д. Я хочу разрешить правый или левый пробел (используя UISwipeGestureRecognizer), чтобы вызвать слайд с текущей таблицы и слайд на новой таблицы со событиями следующего дня (или в предыдущий день ... в зависимости от направления стороны). Способ, которым я пытался это сделать, - просто заставить текущий ScheduleViewController позвонить себе ПОСЛЕ установки новой даты (newDate). Хорошо, это работает, ВИД. SwipeScheduleViewController не заполняет весь экран iphone. Отсутствует область панели вкладок внизу ... и ПОТОМУ ЧТО она находится в UINavigationController, возвращаясь с этой вкладки, и на этой вкладке возникают проблемы. PLUS это означает неспецифически БОЛЬШОЕ количество новых экземпляров, когда пользователь идет вперед и назад во времени. Это несостоятельно.

ScheduleViewController *swipeScheduleViewController = [[[ScheduleViewController alloc] initWithNibName:@"ScheduleView-iPhone" bundle:nil] retain]; 
swipeScheduleViewController.newDate = [NSDate date]; // (increment this or decrement it) 
CATransition *transition = [CATransition animation]; 
transition.duration = 0.75; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; 
transition.subtype = kCATransitionFromLeft; 
transition.delegate = self; 
[self.view.layer addAnimation:transition forKey:nil]; 
[self.view addSubview:swipeScheduleViewController.view]; 
//[swipeScheduleViewController release]; // <-- leaving this in causes crash due to "Deallocated instance" during cellforRowAtIndexPath 

Итак, я думал: Есть ли способ, чтобы установить newDate (не проблема), а затем обновить текущую таблицу (здесь возникает проблема:) МОДЕЛИРОВАНИЯ слайд в/из функции, что можно было бы ожидать.

ИЛИ я думаю об этом полный неправильный путь? Кто-то ранее предложил программно созданный UITableView внутри горизонтального прокручивания UIScrollView, но у этого табличного представления есть много вещей, которые специфичны и трудно согласовать с чем-либо, кроме NIB, связывающего UIViews и т. Д. С моими свойствами внутри файла .m.

EDIT

Возможно, я не полностью объяснил себя, поэтому здесь идет речь: мне требуется, чтобы весь стол скользил с экрана и переходил на другой. Нет, если и есть или нет. Благодаря тем, которые предложили скользящие ряды ... но они не обеспечивают эту гибкость ...

Я не хочу казаться неблагодарным, но я не полностью понимаю метод, чтобы иметь ОДИН нить/представление, содержащее UITableViw (внутри UINavigationController) и нажав это на экране - заменив его SAME nib/view, содержащим UITableView.

Причина Я спрашиваю, Matt, ваше решение является то, что если я не «замечание из» [swipeScheduleViewController release]; в приведенном выше коде, я получаю «высвобождены экземпляр» во cellforRowAtIndexPath ошибки. Это, по-видимому, указывает на то, что iOS не сохраняет swipeScheduleViewController в памяти и не создается, если я не выпущу его. Не освобождая его и, таким образом, предотвращая крах - результат в объекте в памяти и, следовательно, в утечке памяти. Вот почему я сказал, что это опасно делать (в комментариях к вашему ответу) Спасибо. Хотя!

+0

Проблемы, которые вы видите, - это то, что вы делаете, так неправильно. Вы полностью злоупотребляете контроллером представления.Вы должны * никогда * просто взять контроллер просмотра и засунуть свой вид в свой интерфейс, как вы здесь делаете. Либо используйте встроенные типы контроллеров родительского представления, либо разработайте собственный контроллер родительского представления (контроллер представления контейнера) и выполните переход правильно. Вы можете легко перейти к просмотру, да, но не злоупотребляйте контроллером представления одновременно. – matt

+1

[meta] закрытый как слишком локализованный BS. У меня такой же вопрос. – stefann

+0

stefann, пожалуйста, нажмите ссылку «повторно открыть», если вы считаете, что ее следует открыть заново. Я сделал! Это было важно для меня. – Jann

ответ

2

Рассмотрите возможность использования reloadRowsAtIndexPaths:withRowAnimation:. Одной из доступных анимаций является перемещение справа (или слева).

+0

хорошо, может быть, я недоразумение. Я могу просто выпустить tableview.reload после установки даты. Я предполагаю, что мой вопрос - это больше о том, как «имитировать нажимать и отжимать» экран uitableview без создания тонны табличных представлений? – Jann

+0

Если все строки перезагружаются с помощью анимации вправо, разве это не выглядит так, как вся таблица, загруженная с помощью салфетки вправо? – matt

+0

btw: 'reloadRowsAtIndexPaths' не то, что мне нужно. Я хочу, чтобы весь uitableview скользил влево и тот же, что и вправо справа. 'reloadRowsAtIndexPaths' скользит только рядом. Спасибо, тo. – Jann

0

Я предлагаю вам использовать салфетки сверху вниз, а не справа налево, поскольку обычное соглашение прокручивания справа налево или слева направо - переход от одного вида к другому. Вот the link, чтобы воссоздать табличное представление на салфетке вверх. Надеюсь, это поможет вам

+0

Хорошо, может быть, я не объясняю ... прокрутка вверх вниз перезагружает таблицу с теми же или обновленными данными. слева направо * по дате конкретные ситуации * можно легко использовать, чтобы идти изо дня в день (то есть: сегодня к завтрашнему дню). Это то, что я хочу. – Jann

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