如何访问枚举中的变量?

how to access variables inside an enum?

class DetailsViewController: UIViewController
{
    @IBOutlet weak var summaryButton: UIBarButtonItem!
    @IBOutlet weak var commentaryButton: UIBarButtonItem!   
    enum viewState: Int {
        case summary
        case commentary

        func setVisibility() {
            switch (self) {
                case summary:
                    summaryButton.enabled = true
                    commentaryButton.enabled = false
                case commentary:
                    summaryButton.enabled = false
                    commentaryButton.enabled = true
            }
        }
    }
}

我无法访问 summaryButton 和 commentaryButton:给出一个错误 "DetailsViewController.type does not a have a member named summaryButton"

如何访问 summaryButton 和 commentaryButton?

解决方案:这对我有用

enum viewState {
case Summary
case Commentary    
}

class DetailsViewController: UIViewController
{
@IBOutlet weak var summaryButton: UIBarButtonItem!
@IBOutlet weak var commentaryButton: UIBarButtonItem!

var currentState: viewState = .Summary {
    didSet {
        switch (currentState) {
        case .Summary:

            summaryButton.enabled = true
            commentaryButton.enabled = false
            break
        case .Commentary:
            summaryButton.enabled = false
            commentaryButton.enabled = true
            break
        default:
            break

        }
    }
}

在我看来,您的解决方案是倒退的。有一个枚举自己的 IBOutlets to buttons 很奇怪。

我会将 outlet 和 setVisibility 方法移到枚举之外并移到 DetailsViewController 中。在你的 DetailsViewController 中创建一个 viewState 类型的实例变量 currentViewState,然后让你的 setVisibility 方法根据 currentViewState 进行切换。