如何访问枚举中的变量?
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 进行切换。
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 进行切换。