从TableViewCell获取TableView节标题,swift

时间:2017-06-16 07:23:57

标签: ios swift uitableview swift3 uitableviewsectionheader

我有一个TableView有两种单元格,两者都填充了CollectionView。在TableViewController我让他们用简单的if语句显示它们。

我的TableViewController

import UIKit
import RealmSwift
import Alamofire
import SwiftyJSON

let myGroupLive = DispatchGroup()
let myGroupCommunity = DispatchGroup() 

class HomeVTwoTableViewController: UITableViewController {

var headers = ["Live", "Channel1", "ChannelTwo", "Channel3", "Channel4", "Channel5", "Channel6"]

override func viewDidLoad() {
    super.viewDidLoad()
    DataController().fetchSomeDate(mode: "get")
    DataController().fetchSomeOtherData(mode: "get")
}
//MARK: Custom Tableview Headers
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return headers[section]
}

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){

    view.tintColor = UIColor.black
    let header = view as! UITableViewHeaderFooterView
    if section == 0 {
        header.textLabel?.textColor = UIColor.black
        view.tintColor = UIColor.white
    }
    else {
        view.tintColor = UIColor.groupTableViewBackground
    }
}

//MARK: DataSource Methods
override func numberOfSections(in tableView: UITableView) -> Int {
    return headers.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

//Choosing the responsible PrototypCell for the Sections
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.section == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellBig", for: indexPath) as! HomeVTwoTableViewCell

        return cell
    }
    else if indexPath.section == 1 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellSmall", for: indexPath) as! HomeVTwoTableViewCellSmall

        return cell
    }

    else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellSmall", for: indexPath) as! HomeVTwoTableViewCellSmall

        return cell
    }
}

//Set custom cell height, has to match the CollectionView height
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    if indexPath.section == 0 {
        return 225.0
    }
    else {
        return 120.0
    }
  }
}

我的TableViewCellSmall

import UIKit
import RealmSwift

var communities: Results<Community>?

class HomeVTwoTableViewCellSmall: UITableViewCell{

@IBOutlet weak var collectionView: UICollectionView!
}

extension HomeVTwoTableViewCellSmall: UICollectionViewDataSource,UICollectionViewDelegate {

//MARK: Datasource Methods
func numberOfSections(in collectionView: UICollectionView) -> Int
{
    return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    return (communities?.count)!
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCellSmall", for: indexPath) as? HomeVTwoCollectionViewCellSmall else
    {
        fatalError("Cell has wrong type")
    }

//Here I want my Sorting Statement to make unique content per collection view
    //normal approach if no section is asked
    let url : String = (communities?[indexPath.row].pictureUri)!
    let name :String = (communities?[indexPath.row].communityName)!
    cell.titleLbl.text = name
    cell.imageView.downloadedFrom(link :"somelink")

    return cell
}


//MARK: Delegate Methods  
override func layoutSubviews() {
    myGroupCommunity.notify(queue: DispatchQueue.main, execute: {
        let realm = try! Realm()
        communities = realm.objects(Community.self)
        self.collectionView.dataSource = self
        self.collectionView.delegate   = self
    })

}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
do something
 }
}

现在我的问题是,我希望“频道单元格”在CollectionView中填充自定义的不同数据。这意味着我需要某种键才能在正确的单元格中获取正确的数据。我的方法是采用SectionHeader标题,但由于某些原因,我无法从TableViewCellSmall访问它。因此,我拥有所有单元格中的所有数据,并且无法使用我的密钥对它们进行排序。

先谢谢。

0 个答案:

没有答案