Как передать текст метки, нажав на кнопку? - PullRequest
0 голосов
/ 13 января 2019

Я хочу, чтобы при нажатии на мою первую кнопку текст метки печатался на другой метке, которая находится в следующем контроллере вида.

var categories = ["Action", "Drama", "Science Fiction", "Kids", "Horror"] 
var buttonnames = ["one","two","three","four","five"]

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let  frame = tableView.frame
    let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 40))
    let button = UIButton(frame: CGRect(x: tableView.frame.width - 70, y: 0, width: 70, height: 40))
    button.setTitle("more", for: UIControlState.normal)
    button.backgroundColor = UIColor.red
    button.setTitle(buttonnames[section], for:  UIControlState.normal)
    button.addTarget(self, action: #selector(gotonext(_:)), for: .touchUpInside)
    headerView.addSubview(button)
    let  label = UILabel(frame: CGRect(x: 5, y: 0, width:tableView.frame.width/2 , height: 40))
    label.text = self.categories[section]
    headerView.addSubview(label)
    return headerView
}

@ objc func gotonext(_ sender:UIButton){
    let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
    self.navigationController?.pushViewController(nextVC, animated: false)
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 40
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return categories[section]
}

func numberOfSections(in tableView: UITableView) -> Int {
    return categories.count
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow
    return cell
}

мой сотовый код:

import UIKit

class CategoryRow : UITableViewCell{
    @IBOutlet weak var collectionView: UICollectionView!
}

extension CategoryRow : UICollectionViewDataSource{

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 12
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "videoCell", for: indexPath) as! VideoCell
        return cell
    }

}

extension CategoryRow : UICollectionViewDelegateFlowLayout {

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{
        let itemsPerRow:CGFloat = 4
        let hardCodedPadding:CGFloat = 5
        let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
        let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
        return CGSize(width: itemWidth, height: itemHeight)
    }
}

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

image

1 Ответ

0 голосов
/ 13 января 2019

В вашем табличном представлении ForHeaderInSection .. используйте

button.addTarget(self, action: #selector(gotonext(_:)), for: .touchUpInside)
button.tag = section
headerView.addSubview(button)

тогда в твоей функции

@ objc func gotonext(_ sender:UIButton){
    let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
    nextVC.myTitle = self.categories[sender.tag]
    self.navigationController?.pushViewController(nextVC, animated: false)
}

В вашем NextViewController создайте переменную с именем. Вы получите значение в myTitle

var myTitle:String?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...