Main.storyboardでUIを作成します。
Labelを1個使用します。
Interface.storyboardでUIを作成します。
いつものiOS開発と同じです。Label2つとButtonを1つ貼り付けます。
AppDelegate.m
#import "AppDelegate.h"
#import "ViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply{
NSDictionary *info;
// 空白ではなかったら
if (userInfo != nil)
{
[[NSNotificationCenter defaultCenter]
postNotificationName:@"changeText" object:self userInfo:userInfo];
[info setValue:@"seccess" forKey:@"type"];
// reply:返信
reply([NSDictionary dictionaryWithObject:@"success" forKey:@"response"]);
}else{
[info setValue:@"wrong" forKey:@"type"];
// reply:返信
reply(info);
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
- (void)applicationWillTerminate:(UIApplication *)application {
}
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *showLable;
@property (nonatomic,retain) UILabel *myLabel;
@end
@implementation ViewController
// 最初に呼び出されるメソッド
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor whiteColor];
//【通知の受取側 - 受取の登録】
// 通知 デフォルトの通知センターを取得する
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
// 通知センターに通知要求を登録する
// この例だと、通知センターに"setchangeText"という名前の通知がされた時に、
// setMyLabelText:メソッドを呼び出すという通知要求の登録を行っている。
[nc addObserver:self selector:@selector(setMyLabelText:) name:@"changeText" object:nil];
}
// showLable.textに表示
- (void)setMyLabelText:(NSNotification *)labelStr{
NSDictionary *dic = [labelStr userInfo];
self.showLable.text = [dic objectForKey:@"content" ];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import "InterfaceController.h"
@interface InterfaceController()
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *replayLabel;
@end
@implementation InterfaceController
// 最初に呼び出されるメソッド
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
[self.replayLabel setHidden:YES];
// Configure interface objects here.
}
// ユーザーにUIが表示されたタイミングで呼び出されるメソッド
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
}
// UIが非表示になったタイミングで呼び出されるメソッド
- (void)didDeactivate {
// This method is called when watch view controller is no longer visible
[super didDeactivate];
}
// 返信ボタンアクション
- (IBAction)replay
{
NSMutableDictionary *infoDic = [[NSMutableDictionary alloc] init];
[infoDic setValue:@"おかけさまで元気です!" forKey:@"content"];
[WKInterfaceController openParentApplication:infoDic reply:^(NSDictionary *replyInfo, NSError *error) {
NSLog(@"----->%@",replyInfo);
if ([[replyInfo objectForKey:@"response"] isEqualToString:@"success"])
{
[self.replayLabel setHidden:NO];
[self.replayLabel setText:[infoDic objectForKey:@"content"]];
}
}];
}
@end
GitHub WatchKitReplyObj
▫️参考にしたページ
コメントをお書きください