2014-09-18 4 views
0

У меня есть UITableViewController, и когда я нажимаю на него, он будет показывать DetailViewUIController. Я хочу добавить функциональность, которая, когда я нахожусь в DetailViewUIController, и я проведите по экрану вправо, она покажет DetailViewUICконтроллер следующего элемента, и когда он останется, отобразится предыдущий элемент.Как построить контроллер просмотра swipe в swift

Я нахожу ссылку, которая делает это быстро. Но он имеет только 3 статических контроллера subview. https://medium.com/swift-programming/ios-swipe-view-with-swift-44fa83a2e078

Количество записей в моем TableView может быть довольно долго, как я могу сделать то же самое, динамически, т.е. без статического количество subviewcontroller создано и добавить 'addChildViewController?

Update:

Еще раз спасибо @rdelmar за вашу помощь.

У меня возникли проблемы с получением 'set contentOffset представления коллекции (ширина коллекции) * selectedRow' для работы.

В моей функции prepareForSegue, я добавил:

x = Float(indexPath.row) * 375.0 
    var point = CGPointMake(CGFloat(x), 0) 
    println ("***x=") 
    println (x) 
    detailController.collectionView?.setContentOffset(point , animated: false) 

где detailController является UICollectionViewController.

и в

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as DetailViewCell 

     // Configure the cell 
     println("DetailViewController in cellForItemAtIndexPath()") 
     println(indexPath.row) 
    cell.myitem = allItems[indexPath.row] 

возвратной клетке }

И я всегда вижу cellForItemAtIndexPath пытается получить 0-й элемент из allItems (то есть целые коллекции всех моих объектов.

Поэтому setContentOffset() не меняет то, что я показываю в подробном представлении, независимо от того, какой элемент я нажимаю в своем TableView для запуска подробного просмотра.

Любая идея решить эту проблему?

спасибо.

ответ

0

Есть много разных способов, которыми вы могли бы это сделать. Один из способов заключается в том, чтобы сделать представление контроллера детали вашего представления представлением коллекции (с включенным пейджингом), ячейки которого имеют тот же размер, что и экран. Вам нужно будет передать массив, который вы используете, чтобы заполнить таблицу, чтобы представление коллекции могло заполнять его ячейки. Это было бы довольно эффективно, так как в представлении коллекции только когда-либо понадобится создать экземпляр двух ячеек.

+0

Спасибо. Я создаю CollectionViewController и XCode создает CollectionView внутри CollectionViewController в StoryBoard. Но по умолчанию размер ячейки 50 х 50. Как я могу сделать ячейку того же размера, что и экран? – hap497

+0

@ hap497. Вы можете просто перетащить угол в раскадровке или задать размер в инспекторе размеров для вида коллекции. Вы также можете установить его в коде с свойством itemSize. – rdelmar

+0

Спасибо, снова. Еще один вопрос. Пользователь может щелкнуть 5-й элемент в моем представлении таблицы, чтобы запустить Детальный просмотр. Как мое представление диспетчера представлений деталей будет отображать представление коллекции в пятый элемент при его первом запуске? и проведите по экрану влево, покажите 6? – hap497

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