2015-04-23 3 views
0

Я создаю приложение и не знаю, как лучше всего это сделать.Проведите по экрану и вызовите метод?

Я хочу создать представление с меткой и UIimageview. Я хочу, чтобы пользователь имел возможность прокручивать бесконечно влево или вправо, как приложение на странице. Каждый раз, когда пользователь выполняет поиск, он переходит к идентичному контроллеру представления, за исключением другой метки и UIimage, которая вызывается из массива.

Проблема в том, что я не уверен, что лучший способ сделать это?

Possible Method 1. Есть ли способ использовать 1 контроллер вида и написать код, позволяющий пользователю прокручивать этот одиночный вид влево или вправо на тот же контроллер вида только с обновленной меткой и фотографией?

Possible Method 2. Могу ли я создать два (или, возможно, три) идентичных контроллера представлений, которые пользователь может бесконечно прокручивать между ними, например, пользователь запускается в режиме просмотра 1 и просматривает справа, чтобы просмотреть 2, затем прокручивается вправо, чтобы снова просмотреть 1 и т. Д., Однако каждый раз, когда пользователь проводит другой контроллер просмотра будет загружать следующие данные в массиве (или в предыдущем в зависимости от направления движения)

Может кто-нибудь, пожалуйста, дайте мне советы по наилучшему подходу к этой ситуации и к каким инструментам/методам/классам/etc. Я должен использовать это для достижения, например, должен ли я использовать «контроллер просмотра страницы» или UIScroll View и т. д.

Если кто-то может помочь мне с помощью путеводителя о том, что делать, я могу самостоятельно уйти и исследование, что мне нужно сделать! Спасибо всем за любую помощь, я борюсь с этой ситуацией!

Примечания: Массивы может быть от 10 до 500 и маловероятно, но возможно 1000 различных объектов, которые я буду называть из Интернета, так что я не уверен, что лучший способ, чтобы иметь возможность эффективно загружать объекты и избегайте использования памяти и пространства.

+1

Я бы, вероятно, использовал 'UICollectionViewController' с разбивкой по страницам. –

ответ

1

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

Есть несколько способов сделать это:

  1. Используйте UIScrollView и добавить использовать шаблон контейнера, чтобы добавить вид UIViewController «s, как подвид к UIScrollView. Главным недостатком такого подхода является то, что вам нужно создать свой собственный механизм повторного использования.

  2. Используйте UICollectionView и добавьте также шаблон контейнера, чтобы добавить вид UIViewController в качестве подсмотра в ячейках коллекции. Этот подход действительно хорош при отображении UIViews, он обеспечивает механизм повторного использования, но может быть сложно использовать его с UIViewController.

  3. Последний выбор, и с моей точки зрения, лучший, заключается в использовании UIPageViewController, он обеспечивает механизм повторного использования и обрабатывает подклассы UIViewController. Также обеспечивает классную анимацию для переходов.

ПРИМЕЧАНИЕ. Пожалуйста, проверьте минимальную версию iOS, необходимую для ее использования на iPhone. Для iPad min iOS - iOS 5.

Что касается бесконечного прокрутки, вы можете достичь этого, играя с источником данных в точке 2,3. (Обе реализации требуют источника данных)

0

Привет вы могли бы попробовать это для «Возможный метод 1» подход

В функции «ViewDidLoad» в контроллере представления добавить следующее.

var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right 
    self.view.addGestureRecognizer(swipeRight) 

    var swipeLeft = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left 
    self.view.addGestureRecognizer(swipeLeft) 

Затем добавьте эту функцию и загрузите соответствующие значения метки/изображения.

func respondToSwipeGesture(gesture: UIGestureRecognizer) { 

    if let swipeGesture = gesture as? UISwipeGestureRecognizer { 

     switch swipeGesture.direction { 
     case UISwipeGestureRecognizerDirection.Right: 
      // Set your Label and Image Values here for RIGHT swipe 
      ... 

     case UISwipeGestureRecognizerDirection.Left: 
      // Set your Label and Image Values here for LEFT swipe 
      ... 

     default: 
      break 
     } 
    } 
} 
Смежные вопросы