Добавление текстового поля в ячейку UITableview

Я новичок в программировании Ios с Swift 2.2

То, что я пытаюсь достичь - это вставить два текстовых поля в ячейку uitableview или ячейки uitableview.

например, текст в ячейке будет иметь этот формат

"А против Б"

Я хочу вставить текстовые поля по обе стороны от VS, поэтому я хочу, чтобы это выглядело так: «A [Textfield] vs [Textfield] B»

любая помощь будет оценена

 B B10 июл. 2016 г., 17:47
@ Арун Кумарtopbestfreeapps.com/wp-content/uploads/2013/09/...         если вы посмотрите на это изображение, я хочу добавить текстовое поле по обе стороны от vs, чтобы я мог вручную ввести оценки, это помогает?
 Diego10 июл. 2016 г., 17:12
У тебя еще есть что-нибудь? В основном это можно решить двумя способами: 1) использовать конструктор интерфейса для создания ваших ячеек или 2) создавать текстовые поля вtableview(_: cellForRowAtIndexPath:) метод.
 Arun Kumar10 июл. 2016 г., 17:11
Что ваше требование? Можете ли вы разработать или загрузить своеобразное изображение, которое поможет нам понять ваши требования.
 B B10 июл. 2016 г., 17:49
@ Диего Да, у меня уже есть стол, чтобы показать "А против Б". если бы я использовал ваш второй метод, чтобы добавить текстовое поле, как я буду это делать, я пытался использовать конструктор интерфейса, но поля никогда не появлялись, спасибо

Ответы на вопрос(3)

class TextFieldsCell: UITableViewCell {
    @IBOutlet var textfield1: UITextField!
    @IBOutlet var textfield2: UITextField!
}

В IB выберите свое табличное представление и добавьте ячейку прототипа в свое табличное представление, установив «Ячейки прототипа» в «1» в инспекторе атрибутов:

В IB расположите текстовые поля внутри вашей ячейки, используя autolayout. (пропуская детали реализации autolayout)

В IB выберите ячейку табличного представления и измените ее «Идентификатор» на «TextFieldsCell» в инспекторе атрибутов:

В IB выберите ячейку табличного представления и измените ее «Class» на «TextFieldsCell» в инспекторе идентичности:

В ИБ подключиTextFieldsCellIBOutlets с соответствующими текстовыми полями:

В вашем контроллере представления, который содержит табличное представление, реализуйте следующее:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 2;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell: TextFieldsCell = tableView.dequeueReusableCellWithIdentifier("TextFieldsCell") as! TextFieldsCell
    return cell
}

Если вы все настроили правильно, вы должны увидеть это при следующем запуске:

Если вы хотите сделать это полностью из кода:

import UIKit

struct MatchInfo {
    var teamA: String
    var teamB: String
}

class ViewController: UIViewController, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    var matches = [MatchInfo]()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.dataSource = self

        // Add some data
        matches.append(MatchInfo(teamA: "Panthers", teamB: "Broncos"))
        matches.append(MatchInfo(teamA: "Bucaneers", teamB: "Falcons"))
        matches.append(MatchInfo(teamA: "Vikings", teamB: "Titans"))
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


    // MARK: -
    // MARK: Table View Data Source Delegate
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return matches.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("myCell") ?? makeCell()

        let textFieldA = cell.viewWithTag(1) as! UITextField
        let textFieldB = cell.viewWithTag(2) as! UITextField

        let row = indexPath.row
        textFieldA.text = matches[row].teamA
        textFieldB.text = matches[row].teamB

        return cell
    }

    func makeCell() -> UITableViewCell {
        let textFieldA = UITextField(frame: CGRectZero)
        let textfieldB = UITextField(frame: CGRectZero)

        textFieldA.tag = 1
        textfieldB.tag = 2
        [textFieldA, textfieldB].forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
            $0.borderStyle = .RoundedRect
        }

        let vsLabel = UILabel(frame: CGRectZero)
        vsLabel.text = "vs."
        vsLabel.translatesAutoresizingMaskIntoConstraints = false

        let cell = UITableViewCell(style: .Default, reuseIdentifier: "myCell")
        [textFieldA, textfieldB, vsLabel].forEach { cell.contentView.addSubview($0) }

        // Layout the elements
        let views = ["A": textFieldA, "B": textfieldB, "vs": vsLabel]
        let c1 = NSLayoutConstraint.constraintsWithVisualFormat("H:[A]-8-[vs]-8-[B]", options: .AlignAllBaseline, metrics: nil, views: views)
        let c2 = NSLayoutConstraint(item: textFieldA, attribute: .Left, relatedBy: .Equal, toItem: cell.layoutMarginsGuide, attribute: .Left, multiplier: 1, constant: 0)
        let c3 = NSLayoutConstraint(item: textfieldB, attribute: .Right, relatedBy: .Equal, toItem: cell, attribute: .Right, multiplier: 1, constant: 0)
        let c4 = NSLayoutConstraint(item: textFieldA, attribute: .CenterY, relatedBy: .Equal, toItem: cell.contentView, attribute: .CenterY, multiplier: 1, constant: 0)
        let c5 = NSLayoutConstraint(item: textFieldA, attribute: .Width, relatedBy: .Equal, toItem: textfieldB, attribute: .Width, multiplier: 1, constant: 0)

        NSLayoutConstraint.activateConstraints(c1 + [c2, c3, c4, c5])

        return cell
    }
}

Результат:

Сделайте следующее:

Создайте новый класс, сделайте его подклассом UITableViewCell и назовите его как MyTableViewCell.

В файле Storyboard щелкните свой tableView, затем на правой панели щелкните инспектор атрибутов, выберите ячейки прототипа: 1.

Щелкните по только что созданной ячейке и в инспекторе атрибутов выберите имя идентификатора (например, «myCellID»). Затем в инспекторе идентичности установите атрибут класса MyTableViewCell.

Перетащите textFields в вашу ячейку, затем с помощью помощника редактора, нажмите Ctrl + щелчок и перетащите из ваших textFields в ваш подкласс UITableViewCell. Это должно создать выходы для ваших текстовых полей.

В вашем ViewController заставьте ваш класс реализовать протокол UITableViewDataSource и переопределитьtableView(_: numberOfRowsInSection:) иtableview(_: cellForRowAtIndexPath:), Тогда в последнем методе напишите:

пусть myCell = tableView.dequeueReusableCellWithIdentifier ("myCellID") как! MyTableViewCell возвращает myCell

Даже если мы не используем выходы для текстовых полей, которые вы создали, вам нужно будет использовать их в какой-то момент, чтобы предварительно заполнить контент, установить методы целевого действия и т. Д.

Ваш ответ на вопрос