如何设置WKInterfaceButton的标题?

时间:2016-11-19 06:05:14

标签: objective-c watchkit

按下按钮时,我正在尝试更改按钮的文本,但它不起作用。我错过了什么吗?

我一直试图解决我的问题几个小时。 任何帮助将不胜感激。

小时。文件

#import <WatchKit/WatchKit.h>
#import <Foundation/Foundation.h>

@interface InterfaceController : WKInterfaceController
{

    IBOutlet WKInterfaceButton*playpausebtn;
}
-(IBAction)play;
@end

米。文件

#import "InterfaceController.h"
#import <WatchConnectivity/WatchConnectivity.h>


@interface InterfaceController() <WCSessionDelegate>

@end


@implementation InterfaceController

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];

    // Configure interface objects here.
}
- (void)willActivate {
    [super willActivate];

    if ([WCSession isSupported]) {
        WCSession *session = [WCSession defaultSession];
        session.delegate = self;
        [session activateSession];



    }

}

- (void)didDeactivate {
    // This method is called when watch view controller is no longer visible
    [super didDeactivate];
}




-(IBAction)play{
    [playpausebtn setTitle:@"sleep"];

}

1 个答案:

答案 0 :(得分:0)

在Swift-3 Xcode-8.1中工作正常。

// InterfaceController.swift // WatchKit扩展 导入WatchKit 进口基金会 导入WatchConnectivity

class InterfaceController:WKInterfaceController,WCSessionDelegate {

@IBOutlet var textLabel: WKInterfaceLabel!

var session:WCSession?

override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    // Configure interface objects here.
}

override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    super.willActivate()
    checkSupportOfSession()
    changeAttributeOfText()
}

@IBOutlet var buttonOutlet: WKInterfaceButton!

override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
}

func checkSupportOfSession() {
    if( WCSession.isSupported() ) {
        self.session = WCSession.default()
        self.session?.delegate = self
        self.session?.activate()
    }
}

func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    print("session")
}

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {

    let message:String = message["textIndex"] as! String
    textLabel.setText(message)
    print(message)

}

func changeAttributeOfText() {

    let paragraphStyle =  NSMutableParagraphStyle()
    paragraphStyle.alignment = .left
    let font = UIFont.boldSystemFont(ofSize: 12)
    let attributes:Dictionary = [NSParagraphStyleAttributeName:paragraphStyle ,  NSFontAttributeName:font ]

    let attributeString:NSAttributedString = NSAttributedString(string: "HELLO", attributes: attributes)
    textLabel.setAttributedText(attributeString)

}

 //Change the ButtonTitle after click
 @IBAction func buttonClicked() {
     buttonOutlet.setTitle("textNew")
 }}

Demo App