UIImages作为侧面推送菜单中的图标

时间:2018-07-24 16:05:30

标签: ios swift xcode

我想先说一下我是iOS的新手。
我目前正在尝试创建一个侧面推送菜单,该菜单在单击时在每个菜单项旁边都有图标。我目前有侧面推式菜单,其中列出了几个菜单项,但是,我真的很努力地尝试使每个菜单项旁边都有图像。
我已经用下面的代码编写了侧面推送菜单并以编程方式列出了项目。

import UIKit

class SideMenuTable: UITableViewController {
    let sideMenuImages = [UIImage(named: "Main"), UIImage(named: "Departments"), UIImage(named: "Deliveries"), UIImage(named: "Warehouse"), UIImage(named: "Help")]

    var menu = [Menu]()

    @IBOutlet weak var test: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Change Menu View"

        menu = [
            Menu(title: "Main"),
            Menu(title: "Departments"),
            Menu(title: "Deliveries"),
            Menu(title: "Warehouse"),
            Menu(title: "Help")
        ]
    }

    override func viewWillAppear(_ animated: Bool) {
        if tableView.isHidden {
            if let selectionIndexPath = tableView.indexPathForSelectedRow {
                tableView.deselectRow(at: selectionIndexPath, animated: animated)
            }
        } else if tableView.isFocused {
            if let selectionIndexPaths = tableView.indexPathForSelectedRow {
                tableView.deselectRow(at: selectionIndexPaths, animated: animated)
            }
        }
        super.viewWillAppear(animated)
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "sideCell", for: indexPath)
        let menuSide: Menu


//        var image: UIImage = UIImage(named: ".png")

        menuSide = menu[indexPath.row]

        cell.textLabel!.text = menuSide.title
        cell.textLabel?.textAlignment = .center

        return cell
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if(indexPath.section == 1) {
            if(indexPath.row == 3) {
                dismiss(animated: true, completion: nil)
                performSegue(withIdentifier: "Warehouse", sender: self)
            } else {
                NSLog("NO SELECTION AVAILABLE")
            }
        }
    }
}

从下面的图片中可以看到。

![SidePushMenuViewController] 1

我已经开始尝试通过将UIImage插入原型单元格来解决我的问题。

但是,当我将UIImage作为插座连接到上面的代码中时,收到此错误。 (注意:出口上方的代码中名为test)

enter image description here

在这里我被困住了。 我需要连接此插座,以便为我拥有的各种菜单项添加图标。

我想念什么? 为菜单项创建图标的问题有其他解决方法吗?

我需要创建一个单独的子类吗?

2 个答案:

答案 0 :(得分:3)

您需要为UITableviewcell创建一个自定义类,在其中需要创建IBOutlet来进行图像查看和标记。

现在您可以在cellForRowAtIndexPath方法中访问它。

override func tableView(_ tableView:     UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

let cell = tableView.dequeueReusableCell(withIdentifier: "sideCell", for: indexPath) as YourCustomCell

    let menuSide: Menu
var image: UIImage = UIImage(named: ".png")

menuSide = menu[indexPath.row]
cell.customLabel!.text =       menuSide.title

    cell.customLabel?.textAlignment = .center

Cell.imgViewName.image = image
return cell
}

在这里customLabel和imgViewName是IBOutlet的名称,您需要从情节提要中将自定义单元格拖动到IBOutlets中,还可以通过选择特定的单元格在情节提要中提供自定义单元格的名称。

答案 1 :(得分:0)

如果您不想创建自定义类,请在uiimageview和uilabel上设置任何标签,并按以下方式使用

override func tableView(_ tableView:     UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


let lblmenu : UILabel = cell.contentView.viewWithTag(12) as! UILabel
    lblmenu.text = ArrMenuoption[indexPath.row] as? String
    let img : UIImageView = cell.contentView.viewWithTag(11) as! UIImageView
    img.image = UIImage.init(named: ArrMenuoptionimg[indexPath.row] as! String )
return cell }