ストップウォッチ+時計アプリ完成

前回まで作っていたストップウォッチアプリをタブバーアプリケーションにして、時計のタブと切り替えられるようにした。















作成手順(ざっくり)

  1. ストップウォッチアプリを作る
  2. 同じプロジェクト内でViewController追加して時計アプリ作る
  3. メニュー -> Editor -> Embed inからタブバーコントロール挿入
  4. StoryboardでタブバーコントロールとViewを結びつける(接続形態はRelationship)

時計アプリのソース(抜粋)

.h

#import <UIKit/UIKit.h>

@interface ViewController2 : UIViewController{
    NSTimer *timer;
}
@property (weak, nonatomic) IBOutlet UILabel *lbl;
-(void)onTimer:(NSTimer*)timer;

@end

.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    timer = [NSTimer scheduledTimerWithTimeInterval:(1.0)
                                             target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
}

-(void)onTimer:(NSTimer*)timer {
    NSDate* now = [NSDate date];//現在時刻取得
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    NSDateComponents *dateComps = [calendar components:NSYearCalendarUnit |
                                   NSMonthCalendarUnit  |
                                   NSDayCalendarUnit    |
                                   NSHourCalendarUnit   |
                                   NSMinuteCalendarUnit |
                                   NSSecondCalendarUnit
                                              fromDate:now];
    
    self.lbl.text = [NSString stringWithFormat:@"%d年 %02d月 %02d日 %02d時 %02d分 %02d秒",
                     dateComps.year,
                     dateComps.month,
                     dateComps.day,
                     dateComps.hour,
                     dateComps.minute,
                     dateComps.second];

}

時計アプリのポイント

現在時刻の取得と、それをバラして表示するという部分。
バラす処理を書くのに参考にしたのは、ここ
バラした値をラベルに入れるための文字列に整形する処理を書くときに参考にしたのはここの最後あたり。

3つ目のチュートリアルを終えて

今回は地味に時間がかかった。
ドットインストールの学習のときにホイホイViewControllerを追加したけどコードは書く必要がなかったのが仇になった形だ。
その分苦しみながらノウハウがついたと思えば結果オーライだと考えたい。

今回のアプリ作成の一番のポイントは、複数ViewControllerをStoryboardで作成したときに、どうやってソースと結びつけるかという点。
Xcode4.4でViewControllerを追加する方法 - yamekodevの日記
で書いたことを忘れないようにしたい。

タブバーアプリケーションの難しさというよりも、複数Viewアプリケーションの難しさを感じたアプリ作成だった。