首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WatchKit中WKInterfaceButton的隐藏状态

WatchKit中WKInterfaceButton的隐藏状态
EN

Stack Overflow用户
提问于 2015-10-03 04:20:29
回答 3查看 803关注 0票数 3

有没有办法在WatchKit中检查WKInterfaceButton的当前隐藏状态?

EN

回答 3

Stack Overflow用户

发布于 2015-10-03 04:28:26

看起来你不能这么做。但您可以将自己的变量与state一起存储并使用它。

在下面你可以检查按钮的父类的定义。

代码语言:javascript
复制
public class WKInterfaceObject : NSObject {

    public func setHidden(hidden: Bool)
    public func setAlpha(alpha: CGFloat)

    @available(watchOS 2.0, *)
    public func setHorizontalAlignment(horizontalAlignment: WKInterfaceObjectHorizontalAlignment)
    @available(watchOS 2.0, *)
    public func setVerticalAlignment(verticalAlignment: WKInterfaceObjectVerticalAlignment)

    public func setWidth(width: CGFloat)
    public func setHeight(height: CGFloat)
    @available(watchOS 2.0, *)
    public func setRelativeWidth(width: CGFloat, withAdjustment adjustment: CGFloat)
    @available(watchOS 2.0, *)
    public func setRelativeHeight(height: CGFloat, withAdjustment adjustment: CGFloat)

    @available(watchOS 2.0, *)
    public func sizeToFitWidth()
    @available(watchOS 2.0, *)
    public func sizeToFitHeight()

    public var interfaceProperty: String { get } // same as controller's property name
}
票数 1
EN

Stack Overflow用户

发布于 2015-10-03 04:30:38

WKInterfaceButton类有一个继承自WKInterfaceObject类的名为setHidden:的方法,您可以使用它来显示/隐藏按钮,并通过一个auxiliar变量以编程方式设置WKInterfaceButton的状态。

类似于下面的示例:

代码语言:javascript
复制
class InterfaceController: WKInterfaceController {

   @IBOutlet var button: WKInterfaceButton!     

   var buttonIsHidden: Bool!

   override func awakeWithContext(context: AnyObject?) {
      self.changeStatusOfButton(true)
   }

   private func changeStatusOfButton(status: Bool) {

      // set programmatically the status of the button to hide/show 
      self.activityButton.setHidden(status)

      // save the current status
      self.buttonIsHidden = status
   }

   private func showButtonAgain() {
       self.changeStatusOfButton(false)
   }
}

当你想知道按钮是否隐藏/显示时,你只需要检查变量buttonIsHidden

我希望这对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-09-12 18:26:46

正如前面的答案所述,您必须维护自己的变量来跟踪组、标签、按钮等是否被隐藏。一种简单而优雅的方法是使用属性观察器声明跟踪变量,如下所示:

代码语言:javascript
复制
@IBOutlet weak var btnChange: WKInterfaceButton!
@IBOutlet weak var lblPending: WKInterfaceLabel!
@IBOutlet weak var lblConfirmed: WKInterfaceLabel!

// Property observers.  Set initial values to match storyboard / initial setup
var btnChangeIsHidden = false {didSet{btnChange.setHidden(btnChangeIsHidden)}}
var lblPendingIsHidden = true {didSet{lblPending.setHidden(lblPendingIsHidden)}}
var lblConfirmedIsHidden = true {didSet{lblConfirmed.setHidden(lblConfirmedIsHidden)}}

我们使用强大的命名约定,以便跟踪变量分配给哪个对象始终是显而易见的。一旦你声明了你的变量和观察者,那么在代码中你只需要引用跟踪变量。您可以查询它们的当前状态并分配一个新状态,因为无论出于何种目的和目的,它们都可以被视为对象的属性。例如。

代码语言:javascript
复制
        if !self.lblPendingIsHidden {
        // In a pending state; reset to status before attempted change
            // Toggle button / label
            self.btnChangeIsHidden = !self.btnChangeIsHidden
            self.lblPendingIsHidden = !self.lblPendingIsHidden
        } else {
            // Change was applied
            self.btnChangeIsHidden = false
            self.lblConfirmedIsHidden = true
        }

我们将"IsHidden“添加到跟踪变量末尾的约定也使我们更容易在iOS和WatchOS之间移动代码,因为所需的更改很容易定位和进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32915249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档