ios - UIImages 作为侧推菜单中的图标

标签 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 插入原型(prototype)单元格来解决我的问题。

但是,当我将 UIImage 作为导出连接到上面的代码时,我收到此错误。 (注意:在上面的代码中,outlet 被命名为 test)

enter image description here

这就是我卡住的地方。 我需要连接这个 socket ,以便为我拥有的各种菜单项添加图标。

我错过了什么? 对于为菜单项创建图标这一问题,是否有不同的解决方案?

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

最佳答案

您需要为 UITableviewcell 创建一个自定义类,您需要在其中为 ImageView 和标签创建 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 是您的 IBOutlets 的名称,您需要将其从 Storyboard 中拖入您的自定义单元格,还可以通过选择该特定单元格来提供 Storyboard 中自定义单元格的名称。

关于ios - UIImages 作为侧推菜单中的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503141/

相关文章:

ios - Storyboard手势识别器

ios - 将核心数据实体发送到 FireBase?

ios - 如何在降压构建上运行 xcconfig

ios - Xcode 验证无法在 iTunes Connect 中找到应用程序

ios - 覆盖 iOS 系统音量播放闹钟

ios - 图像的 iPad 后缀不起作用

ios - 尝试将 ManagedObjectContext 从 GameAppDelegate 传递到嵌入在 NavigationController 中的 View

arrays - 读取文本文件时如何忽略标题

ios - 有没有办法使用 HealthKit 在 iOS 上请求非临床和临床记录的授权?

c++ - 如何在 OSX 上将静态 C++ 函数声明为友元