2013-03-20 1 views
-5

В настоящее время я работаю над проектом, у меня есть твиты во встроенном виде таблицы и вам нужно перетащить выделенную ячейку в viewcontroller. Как я могу заставить это работать? Я новичок, поэтому не имею большой идеи. Любое предложение по решению этой проблемы?Как перетащить твиты из tableview на viewcontroller

+2

[Что вы пытались?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Walls

+0

Вам нужно более подробно описать вашу проблему, пытаетесь ли вы перетащить приложение? Вы пытаетесь перетащить инструменты? Что означает перетаскивание «твита» на средство просмотра? Чего вы ожидаете? –

+0

Мне нужно перетащить ячейку, содержащую твиты, из таблицы просмотра на viewcontroller. – user2121594

ответ

0

Есть много способов сделать перетащить & drop, но вот обзор процесса, который может вас запустить.

Вы будете использовать метод UIPanGestureRecognizer или touchsBegan/touchesMoved/touchesEnded, чтобы определить, когда пользователь инициировал, перемещал или удалял объект.

Когда начинается перетаскивание, вам нужно отделить представление от его супервизора (removeFromSuperview), и по мере того, как касание перемещается по экрану, будут мигать касанияMoved (если вы используете GestureRecognizers, состояние изменится на UIGestureRecognizerStateChanged. палец пользователя перемещается, вы отрегулируете центр вашего вида (например, dragView.center), чтобы отразить новое местоположение. Наконец, когда он отбрасывается, дескриптор touchedEnded (или изменение состояния в распознавателе жестов в UIGestureRecognizerStateEnded).

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

float dx = pt.x - startLocation.x; // calculate change in x 
float dy = pt.y - startLocation.y; // change in y 
CGPoint newCenter = CGPointMake(self.center.x + dx, self.center.y + dy); // calculate new center 
self.center = newCenter;   // set new center 

Это заставляет ваше представление двигаться, готовое к следующей итерации.

Это сложнее при переходе от одного вида к другому, поскольку вам придется преобразовывать между системами координат.

Если вы знакомы с аффинных преобразований, есть метод, который гораздо проще, где StateChange (то есть, вид движения) обрабатывается что-то вроде этого:

CGPoint translation = [sender translationInView:dragView]; 
CGAffineTransform theTransform = dragView.transform; 
theTransform.tx = translation.x; 
theTransform.ty = translation.y; 
dragView.transform = theTransform; 

и когда падение происходит его что-то вроде этого:

CGPoint newCenter = CGPointMake(dragView.center.x + dragView.transform.tx, dragView.center.y + dragView.transform.ty); 
dragView.center = newCenter; 
CGAffineTransform theTransform = dragView.transform; 
theTransform.tx = 0.0f; 
theTransform.ty = 0.0f; 
(code to attach to receiving view). 

Другим осложняющим фактором является то, что представление можно отбрасывать только в определенных местах в режиме приема. Лучший способ справиться с этим состоит в создании массива «целей возврата», который просто содержит представления, которые будут принимать падение. Обычно вы используете теги, чтобы определить, какая цель выбрана.

Я считаю, что UIPanGestureRecognizer проще в использовании, но в любом случае работает. Я также думаю, что это легче, если вы справляетесь с распознаванием жестов в специальном «dragView», но есть обстоятельства, когда это не сработает (или я не смог заставить его работать), что происходит там, где есть это несколько видов, в которые элемент может быть удален. Если вы можете адаптировать его, есть некоторый код, который должен работать здесь:

http://www.ancientprogramming.com/2012/04/05/drag-and-drop-between-multiple-uiviews-in-ios/

Я не пробовал, но другие, кажется, везло с ним.

Я не знаю, поможет ли это вообще, но, возможно, это заставит вас прокатиться.

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

  • Нет связанных вопросов^_^