UIcollectionview Пользовательский класс Cell для didselectitem в - PullRequest
0 голосов
/ 13 мая 2018

my collectionview содержит несколько пользовательских классов ячеек, созданных программным способом. Самое интересное, что у меня будет ячейка, в которой будет другой вид коллекции. Итак, как перейти в это представление коллекции, чтобы представить новый контроллер представления? Ниже приведены мои примеры кодов о том, как создать ячейку.

class MainView: UIViewController {
** main view to display UIcollectionview **
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: userCellIdent, for: indexPath) as! UserContainerViewCell
            cell.Users = users * to display users array*
            return cell

}


class UserContainerViewCell: UICollectionViewCell{
* the uicollectionview that inside a cell , also contains extension to UIcollectioview datasource and delegate to display the cells within this cell*

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ident, for: indexPath) as! userCell
        let user = featureUsers![indexPath.row]
        cell.config(withUser: user)

        return cell
    }
}



class userCell: UICollectionViewCell {

func config(withUser: UserProfile) { }
** cell class to display the info from the user array **
}

Итак, с помощью этой настройки, как щелкнуть в ячейке и представить новый контроллер с информацией о пользователе в массиве?

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вы должны передать делегат или уведомление о попадании в viewController на didSelect внутреннего collectionViewCell, и в этом методе вы можете представить новый контроллер представления.

проверить ссылку

Swift: Как использовать «didSelectItemAtIndexPath» в UITableViewController (содержит UICollectionView)?

0 голосов
/ 13 мая 2018

Вы можете попробовать

class UserContainerViewCell: UICollectionViewCell {
  var myInstance: MainView!
}

class MainView: UIViewController {
 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: userCellIdent, for: indexPath) as! UserContainerViewCell

     cell.myInstance = self

  }

}

затем внутри didSelectItemAtRow

let vc = myInstance.storyboard?.instantiateViewController(withIdentifier: "infoView") as! InfoController 

vc.providesPresentationContextTransitionStyle = true;

vc.definesPresentationContext = true;

vc.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

myInstance.present(vc, animated: false, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...