Свифт настоящее представление без перехода с делегатом - PullRequest
0 голосов
/ 12 марта 2019

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

import UIKit


class MenuViewController: UIViewController, SwitchView {
    let titles: [String] = ["Previous Issues", "Bookmarks", "Settings", "Website", "About"]
    let images: [UIImage] = [#imageLiteral(resourceName: "newspaper.png"),#imageLiteral(resourceName: "bookmark-outline.png"),#imageLiteral(resourceName: "settings.png"),#imageLiteral(resourceName: "outside-page.png"),#imageLiteral(resourceName: "info.png")]
    var menuItems: [menuItem] = []
    public var index: Int = 0



override func viewDidLoad() {
    super.viewDidLoad()
    menuItems = createMenu()
}

override func viewDidAppear(_ animated: Bool) {
}

func switchView(index: Int){
    NSLog("THIS CODE IS RUNNING")
    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = storyBoard.instantiateViewController(withIdentifier: "Settings")
    self.present(newViewController, animated: true, completion: nil)
}

func createMenu() -> [menuItem]{
    var index: Int = 0
    for (i,image) in zip(titles, images) {
        menuItems.append(menuItem(labelText: i, picture: image, index: index))
        index += 1
    }
    return menuItems
}

}

extension MenuViewController: UITableViewDataSource, UITabBarDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return menuItems.count
    }

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        tableView.rowHeight = 90
        tableView.separatorStyle = .singleLine
        let item = menuItems[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "MenuCell") as! MenuCell
        cell.setAttributes(item: item)
        return cell
    }
}

Это мой код MenuCell

import UIKit

protocol SwitchView {
    func switchView(index: Int)
}

class MenuCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var picture: UIImageView!
var index: Int = 0
var delegate: SwitchView?

func setAttributes(item: menuItem) {
    label.text = item.labelText
    picture.image = item.picture
    index = item.index
}

@IBAction func button(_ sender: Any) {
    delegate?.switchView(index: index)
    NSLog("BUTTON")
}

}

Код работает нормально без ошибок, но когда я нажимаю на кнопки моей таблицы, метод switchView () внутри моего класса MenuViewController не работает, но код кнопки работает. Я что-то упустил?

P.S. Код для выбора представляемого контроллера представления не запущен, на данный момент я просто пытаюсь отобразить контроллер представления настроек при нажатии кнопки на MenuCell.

...