プロフィール

カイロプラクター てん

Author:カイロプラクター てん


【趣味】
・自転車に乗って
 ヘロヘロになる事。
・カイロプラクティックで
 人を元気にする事。

カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
作ったiOS App

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iOS Singletone の使い方 勉強 #4

今回はiOS Singletone の使い方 勉強 #3の続きです。

やっと
Singletoneの実装です

いきなり、Singletoneの部分を実装しちゃいましょう!
マウスの右ボタンで
1302058.png
New File...を選んで
1302058.png

1302059.png

1302060.png

最後に
1302061.png
Createをクリック

クラスが出来ました。
1302062.png


ここに書くSingletoneのソースコードは、ググれば沢山でてきますが
これにします。

Singletone.h
#import <Foundation/Foundation.h>
@interface Singletone : NSObject
+(Singletone*)sharedManager;
+(id)allocWithZone:(NSZone*)zone;

@end


Singletone.m
#import "Singletone.h"

@implementation Singletone
static Singletone* _sharedManager = nil;

- (id)init
{
self = [super init];
if (self) {
// 初期処理
}
return self;
}

+ (Singletone*)sharedManager {
@synchronized(self) {
if (_sharedManager == nil) {
(void) [[self alloc] init]; // ここでは代入していない
}
}
return _sharedManager;
}

+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (_sharedManager == nil) {
_sharedManager = [super allocWithZone:zone];
return _sharedManager; // 最初の割り当てで代入し、返す
}
}
return nil; // 以降の割り当てではnilを返すようにする
}

- (id)copyWithZone:(NSZone *)zone{
return self;
}

@end

以上、
これでSingletoneの実装は完了です。

では、このSingletoneを使用して
日時の時間表記、AM/PMと24Hの切り替えを行える様にしましょう。

Second Viewに部品を配置

MainStoryboard.storyboardをクリックして
Second Viewが見えるようにして、今配置してあるもの全て削除します。
1302057.png

真っ白になりました。
部品を配置しましょう。
Segmented Contorolをドラッグ&ドロップして
1302063.png

Segmented Contorolをクリック
1302064.png
Segment 0 を選んで AM/PMと入力

1302065.png
Segment 1 を選んで 24hと入力

では、連携
Editorの真ん中を押して
1302066.png
SecondViewController.hにして

Segmented Contorolをクリック

マウスの右ボタンでドラッグ&ドロップ
1302067.png

Nameにseg_timeと入れて
1302068.png
Connectをクリック

自動的に表記される
1302069.png

もう一回Segmented Contorolを連携
マウスの右ボタンでドラッグ&ドロップして
1302070.png
Connection → Action
Name → btn_seg_time

これで、連携完了

Editorのここを押して
1302019.png
表示を切り替えて

SecondViewController.mをクリック
- (IBAction)btn_seg_time:(id)sender の所に
1302071.png

では、シミュレータRun!
こんどは、ちょっと違います
1302072.png
下側のSecondをクリックして、Viewを切り替えて

AM/PMと24hをクリックすると・・。
ログに
1302073.png
0と1が表示されれば成功!

では、この値をSingletoneしちゃいましょう!

まず、受け渡す為に変数を宣言します。
Singletoneで受け取るので、Singletoneの方で宣言します。

Singeltone.hをクリック
1302074.png
NSInteger seg_time_chg;
@property NSInteger seg_time_chg;
を追加

Singeltone.mをクリック
1302076.png
@synthesize seg_time_chg;

では、変数seg_time_chgに数値を代入しましょう。

SecondViewContoroller.hをクリックして
#import "Singeltone.h"を追加
1302075.png

SecondViewContoroller.mをクリック
1302077.png
    Singletone* sharedData = [Singletone sharedManager];
sharedData.seg_time_chg = sgm_time_index;


これで、seg_time_chgに数値が代入されました。

このseg_time_chgをFirstViewの方で受け取ります。

FirstViewController.hをクリック
1302078.png
#import "Singletone.h"を追加

FirstViewController.mをクリック
時間表時部分のプログラムです。

時間表記部分でseg_time_chgを受け取り時計の表示変更します。
seg_time_chgが[0]がAM/PM [1]の時24時間表記。
1302079.png
    // 現在の時間表示
// Singletoneからデータを取得
Singletone* sharedData = [Singletone sharedManager];

// AM / PM / 24h
NSString *time_AMPM = @"";

// AM / PM : sharedData.seg_time_chg = 0
if (sharedData.seg_time_chg == 0) {
if (nowdateComp.hour < 12 ) {
time_AMPM = @"AM";
}else{
time_AMPM = @"PM";
nowdateComp.hour = nowdateComp.hour - 12;
}
}

// 24h : sharedData.seg_time_chg = 1
// 表示変更しないので、なにもしない。

// 時間表示
self.lbl_time.text = [NSString stringWithFormat:@"%02d:%02d:%02d %@ ",
nowdateComp.hour,
nowdateComp.minute,
nowdateComp.second,
time_AMPM];


よし!
シミュレータRun!
[ AM ]
1302080.png

[ PM ]
1302081.png

[ 24h ]
1302082.png

動いたぁ〜〜〜〜!
ちょっと、AM/PMでかすぎ・・。

今回は、これで終わり

次回は、タイマー部分を制御します。

*** まとめ ***
1.iOS Singletone の使い方 勉強 #1
2.iOS Singletone の使い方 勉強 #2
3.iOS Singletone の使い方 勉強 #3
4.iOS Singletone の使い方 勉強 #4
5.iOS Singletone の使い方 勉強 #5
6.iOS Singletone の使い方 勉強 #6
7.iOS Singletone の使い方 勉強 #7
THEME:プログラミング | GENRE:コンピュータ |

COMMENT

EDIT COMMENT

非公開コメント

 
検索フォーム
QRコード
QRコード
ブロとも申請フォーム
FC2カウンター
ビリリティピルズ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。