Xcode 6.2 以上
https://developer.apple.com/xcode/downloads/
6.2からAppleWatch開発環境(watchkit)が入っています。
iOS8.2以上 (iPhone)
8.2にバージョンアップするとアプリ「Apple Watch」が追加されるのですぐわかります。
iPhoneアプリケーション プロジェクトを生成
xcode起動後、「Create a new Xcode project」を選択します。
次にiOS -> Application -> Single View Applicationを選択します。
WatchKit App側のInterface.storyboard
Characters.plist内容
name:名前
title:タイトル
bio:内容
image:画像名
テーブル表示のソースコード
InterfaseController.mに記述します。
プロパティリストのデータを読み出す方法はソースを参照。
//
// InterfaceController.m
// StarWarsWatchKit WatchKit Extension
//
// Created by MAEDAHAJIME on 2015/04/19.
// Copyright (c) 2015年 MAEDAHAJIME. All rights reserved.
//
#import "InterfaceController.h"
// テーブル行
#import "CharacterTableRow.h"
@interface InterfaceController()
// テーブル
@property (weak, nonatomic) IBOutlet WKInterfaceTable *characterTable;
// Plist配列
@property (strong, nonatomic) NSArray *characterData;
@end
@implementation InterfaceController
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
// Plistの読み込み設定
self.characterData = [NSArray arrayWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"Characters" withExtension:@"plist"]];
}
// ユーザーにUIが表示されたタイミングで呼び出されるメソッド
- (void)willActivate {
[super willActivate];
[self.characterTable setNumberOfRows:self.characterData.count withRowType:@"CharacterRow"];
for (NSInteger i = 0; i < self.characterTable.numberOfRows; i++)
{
// i:rowテーブル行番号生成
CharacterTableRow* row = [self.characterTable rowControllerAtIndex:i];
// i:Plist行生成
NSDictionary *character = [self.characterData objectAtIndex:i];
// 名前セット
[row.name setText:character[@"name"]];
// タイトルセット
[row.role setText:character[@"title"]];
// 画像セット
[row.image setImageNamed:character[@"image"]];
}
}
// UIが非表示になったタイミングで呼び出されるメソッド
- (void)didDeactivate {
[super didDeactivate];
}
// Tableをタップした時の画面遷移処理
- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier inTable:(WKInterfaceTable *)table rowIndex:(NSInteger)rowIndex
{
if ([segueIdentifier isEqualToString:@"characterDetailSegue"])
{
// Plist行データの受け渡し
NSDictionary *character = [self.characterData objectAtIndex:rowIndex];
return character;
}
else
return nil;
}
@end
#import <Foundation/Foundation.h>
#import <WatchKit/WatchKit.h>
//接続
@interface CharacterTableRow : NSObject
// 名前
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *name;
// タイトル
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *role;
// 画像
@property (weak, nonatomic) IBOutlet WKInterfaceImage *image;
@end
詳細表示のソースコード
DetailInterfaceController.mに記述します。
#import "DetailInterfaceController.h"
// 接続
@interface DetailInterfaceController()
// 画像
@property (weak, nonatomic) IBOutlet WKInterfaceImage *image;
// 名前
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *name;
// タイトル
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *role;
// 内容
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *bio;
@end
@implementation DetailInterfaceController
// 最初に呼び出されるメソッド
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
// context:Plist行データ
NSDictionary *character = (NSDictionary*)context;
// 画像セット
[self.image setImageNamed:character[@"image"]];
// 名前セット
[self.name setText:character[@"name"]];
// タイトルセット
[self.role setText:character[@"title"]];
// 内容セット
[self.bio setText:character[@"bio"]];
}
// ユーザーに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];
}
@end
GitHub StarWarsWatchKit
コメントをお書きください