Добавление пользовательской метки в ячейку прототипа в режиме разделения - PullRequest
0 голосов
/ 08 июня 2019

Я работаю над приложением словаря в SplitViewController.На главном контроллере представления я хочу показать различные входные слова И сколько раз они были нажаты, а на детали я хочу показать определение слова и детали.До сих пор я все настроил, кроме количества нажатий на слово, которое должно отображаться на контроллере основного представления.Как мне удается настроить различные метки в главном контроллере вида, добавив метку?

// "Word" class
import UIKit

class Word {
let name: String
let meaning: String
let wordType: String
let numberOfTimesFound: String


init(name: String, meaning: String, wordtype: String, numberOfTimesFound: String) {
    self.name = name
    self.meaning = meaning
    self.wordType = wordtype
    self.numberOfTimesFound = numberOfTimesFound
    }
}


let words = [
Word(name: "Afraid", meaning: "WORD DEFINITION GOES HERE", wordtype: "adjective", numberOfTimesFound: "1")
]

//MasterViewController.swift

import UIKit

class MasterViewController: UITableViewController {

override func viewDidLoad() {
    super.viewDidLoad()


    let firstWord = words.first

}


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


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    let word = words[indexPath.row]
    cell.textLabel?.text = word.name
    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let word = words[indexPath.row]
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.detailViewController.refreshUI(word: word)
}

//AppDelegate.swift

import UIKit

@UIApplicationMain


class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var masterViewController = MasterViewController()
var detailViewController = DetailViewController()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let splitViewController = window?.rootViewController as? UISplitViewController
    let leftNavController = splitViewController!.viewControllers.first as? UINavigationController
    masterViewController = (leftNavController?.topViewController as? MasterViewController)!
    detailViewController = (splitViewController!.viewControllers.last as? DetailViewController)!

    // Override point for customization after application launch.
    return true

}

1 Ответ

0 голосов
/ 08 июня 2019
  • Выберите раскадровку или перо в навигаторе проекта.
  • Выберите ячейку прототипа.
  • Нажмите ⌥⌘4 , чтобы отобразить инспектор атрибутов.
  • Установите style ячейки на Right Detail, Left Detail или Subtitle, что разрешает метку detailTextLabel.
  • В cellForRowAt назначьте вторую строку свойству text detailTextLabel

Если предопределенные стили не соответствуют вашим потребностям, установите стиль на custom, перетащите все элементы пользовательского интерфейса в ячейку, добавьте ограничения, создайте подкласс UITableViewCell, добавьте IBOutlets, подключите розетки, установите класс ячейки в пользовательский класс и приведите ячейку в очередь из cellForRowAt к пользовательскому классу.

...