ich tableViewCell
eine ViewController
von einem benutzerdefinierten instanziiert möchten (entsprechend UICollectionViewDelegate,
UICollectionDatasource
) Klasse, die einen benutzerdefinierten Collection in it.The segue eingebettet hat muss ausgeführt werden, wenn ein bestimmter Abschnitt der CollectionView ausgewählt ist. Bereits mit Protokollen versucht funktioniert nicht!Wie ein Viewcontroller aus einer didSelectItemAtIndexPath eines benutzerdefinierten CollectionViewController instanziiert, die ein Teil eines tableViewCell ist
my custom TableView class :-
import UIKit
protocol transferDelegate{
func transfer(_: Int)
}
class ParentTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource{
@IBOutlet weak var parentCellHeader: UIView!
@IBOutlet weak var feedPostUsername: UILabel!
@IBOutlet weak var feedPostUserDetails: UILabel!
@IBOutlet weak var feedPostDescription: UILabel!
@IBOutlet weak var feedPicturesCollectionView: UICollectionView!
@IBOutlet weak var feedUserProfilePictures: CustomProfilepicture!
var transferingDelegate : transferDelegate?
override func awakeFromNib() {
super.awakeFromNib()
feedPicturesCollectionView.dataSource = self
feedPicturesCollectionView.delegate = self
feedPicturesCollectionView.pagingEnabled = true
feedPicturesCollectionView.backgroundColor = UIColor.clearColor()
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) ->
UICollectionViewCell {
let cell = feedPicturesCollectionView.dequeueReusableCellWithReuseIdentifier("FeedPicturesCell", forIndexPath: indexPath) as! FeedPhotosCell
switch(indexPath.row){
case 0 : cell.feedImages.image = UIImage(named: "defaultProfilePic")
case 1 : cell.feedImages.image = UIImage(named: "image1")
case 2 : cell.feedImages.image = UIImage(named: "image2")
case 3 : cell.feedImages.image = UIImage(named: "image3")
default : cell.feedImages.image = UIImage(named: "defaultProfilePic")
}
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print(indexPath.row)
transferingDelegate?.transfer(indexPath.row)
}
}
meine Viewcontroller Klasse: -
import UIKit
class ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource,transferDelegate{
var xibName : String = "HomepageFeedCellHeader"
var lords : [String] = ["name1","name2","name3"]
var que : [String] = ["--","red","blue"]
var desc : [String] = ["abcE","defn","ghi"]
var menProfilePictures : [UIImage] = [UIImage(named: "image1")!,UIImage(named: "image2")!,UIImage(named: "image3")!]
@IBOutlet weak var parentTableView: UITableView!
var a : ParentTableViewCell = ParentTableViewCell()
override func viewDidLoad() {
super.viewDidLoad()
parentTableView.delegate = self
parentTableView.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return lords.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = parentTableView.dequeueReusableCellWithIdentifier("ParentCell", forIndexPath: indexPath) as! ParentTableViewCell
a.transferingDelegate = self
cell.feedPostUsername.text = lords[indexPath.row]
cell.feedPostUserDetails.text = queens[indexPath.row]
cell.feedPostDescription.text = desc[indexPath.row]
cell.feedUserProfilePictures.image = menProfilePictures[indexPath.row]
return cell
}
func transfer(itemNo : Int) {
print("call recieved in viewController from item \(itemNo)")
}
}
Mit th Verwendung von 'NSNotificationCenter'. –
Was ist "a.transferDelegate = self" ?, muss es "cell.transferDelegate = self" sein. –
@BhumitMehta Ich bin neu dazu, können Sie bitte erarbeiten! – Dravidian