たまたんのぶろぐ

たまたんが時たま言いたいことを書いてます。ジャンルはめっちゃええ加減ですwソフトやプログラムのことが多いかもしれませんが。。。。。

UIAlertViewで同期する方法

 

ひさびさの投稿。でも、あくまでもメモっす。°₊·ˈ∗( ˃̶᷇ ‧̫ ˂̶᷆ )∗ˈ‧₊°

 

UIAlertViewって、デリゲートを使用するので

同期とれないですよね。

そこで、クラスをつくり、中でBlocksを使用して、そのまま返すって方法です。

文字では伝わらないんでソースでみてくんろぉ〜ヽ( ゜ 3゜)ノ

 

 

CustomAlertView.h

 

#import <Foundation/Foundation.h>

 

typedef void (^didDismissBlocksType)(NSInteger buttonIndex);

 

 

@interface CustomAlertView : UIAlertView <UIAlertViewDelegate>

 

- (id)initWithTitle:(NSString *)title

            message:(NSString *)message

   didDismissBlocks:(didDismissBlocksType)didDismissBlocks

  cancelButtonTitle:(NSString *)cancelButtonTitle

  otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

 

@end

 

CustomAlertView.m

 

 

 

#import "CustomAlertView.h"

 

@interface CustomAlertView()

{

    didDismissBlocksType didDismissBlocks;

}

@end

 

@implementation CustomAlertView

 

- (id)initWithTitle:(NSString *)title

            message:(NSString *)message

   didDismissBlocks:(didDismissBlocksType)didDismiss

  cancelButtonTitle:(NSString *)cancelButtonTitle

  otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION

{

    self = [super init];

    if (self) {

        self.delegate = self;

    }

 

    self.title = title;

    self.message=message;

 

    didDismissBlocks = didDismiss;

 

    va_list arguments;

 

    va_start(arguments, otherButtonTitles);

 

    NSString* value = otherButtonTitles;

 

    // 可変長引数が nil になるまで繰り返す

    while (value)

    {

        [self addButtonWithTitle:value];

 

        // 次の引数を取得

        value = va_arg(arguments, typeof(NSString*));

    }

 

// 最後に可変長引数の扱いが終わったことを va_end 関数を使って伝えます。

    va_end(arguments);

 

    [self addButtonWithTitle:cancelButtonTitle];

 

    return self;

}

 

//アラートが消えてから呼ばれる

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{

    if(didDismissBlocks != nil)

    {

        didDismissBlocks(buttonIndex);

    }

}

@end

 

 

使い方。

 

    CustomAlertView *alertView

    = [[CustomAlertView alloc] initWithTitle:@"aaaa"

                                     message:@"Message"

                            didDismissBlocks:^(NSInteger buttonIndex){

                                switch (buttonIndex) {

                                    case 0:

                                        //1番目のボタンが押されたときの処理を記述する

                                        NSLog(@"test2Action:ほえほえ1");

                                        

                                        break;

                                    case 1:

                                        //2番目のボタンが押されたときの処理を記述する

                                        NSLog(@"test2Action:ほえほえ2");

                                        break;

                                }

                            }

                           cancelButtonTitle:@"キャンセル"

                           otherButtonTitles:@"ボタン1" ,@"ボタン2",@"ボタン3" ,nil

    ];

 

    [alertView show];

 

 

 

 

 

動作は、自分らで確かめて下さいw

 

 

 

適当にコピペだから文字の大きさ色がぐちゃぐちゃ。あーあ(・_・、)グスン

 

まぁ、私のブログはこんなもんです。。。。。。

 

 

 

NSDataを16進数の文字列に出力する関数

久しぶりに投稿。

 

NSDataを16進数の文字列に出力する関数。(ARC用)

 

- (NSString*) serializeDeviceToken:(NSData*) deviceToken

{

    NSMutableString *str = [NSMutableStringstringWithCapacity:64];

    int length = [deviceToken length];

    char *bytes = malloc(sizeof(char) * length);

    

    [deviceToken getBytes:bytes length:length];

    

    for (int i = 0; i < length; i++)

    {

    [str appendFormat:@"%02.2hhX", bytes[i]];

    }

    free(bytes);

    

    return str;

}

 

または、NSDataのカテゴリーに追加

<NSData+Hex.h>

@interface NSData (Hex)

- (NSString*)hexString ;

@end

 

<NSData+Hex.m>

#import "NSData+Hex.h"

 

@implementation NSData (Hex)

- (NSString*)hexString {

    unichar* hexChars = (unichar*)malloc(sizeof(unichar) * (self.length*2));

    unsignedchar* bytes = (unsignedchar*)self.bytes;

    for (NSUInteger i = 0; i < self.length; i++) {

        unichar c = bytes[i] / 16;

        if (c < 10) c += '0';

        else c += 'a' - 10;

        hexChars[i*2] = c;

        c = bytes[i] % 16;

        if (c < 10) c += '0';

        else c += 'a' - 10;

        hexChars[i*2+1] = c;

    }

    NSString* retVal = [[NSString alloc] initWithCharactersNoCopy:hexChars

                                                           length:self.length*2

                                                     freeWhenDone:YES];

    return retVal ;

}

@end

 

必要だったからメモした。((φ┫ ̄Д ̄ ┣ ホォホォ

CackPHPをMac(with MAMP)で動作させるやり方

いつもの通り超ええかげんブログ。

今回は、Mac(with MAMP)内にCackPHPを設定する方法です。

説明不足だからわからんかったらなんか言ってね。

前提条件:

MacにMAMPが既に入っているものとします。
MacOSX 10.8.3
MAMP Pro 2.1.4

1)CakePHPのダウンロードとインストール
CakePHP 2.3.4

1.CakePHP: 高速開発 php フレームワーク。 Homeから
CakePHP 2.3.4安定版」をダウンロード。

2.「cakephp-2.3.4.zip」を解凍する。
cakephp-2.3.4」と言うフォルダが出来る。
フォルダー名を任意に変更今回は「cakephp」に変更。

3.「cake」フォルダ一式を「アプリケーション/MAMP/htdocs/」に移動する。

4.ふぁるだ等の権限を変更しておく
chmod -R 755 /Applications/MAMP/htdocs/cakephp/app/tmp
chmod -R 755 /Applications/MAMP/htdocs/cakephp/lib/Cake

2)CakePHPの設定編集
1.エディタでcore.phpをオープン
open /Applications/MAMP/htdocs/cakephp/app/config/core.php

「Security.salt」と「Security.cipherSeed」を編集。

f:id:tama-jp:20130511183349p:plain

初期値以外のものに変更する。
    Configure::write('Security.salt', '任意の文字列');
    Configure::write('Security.cipherSeed', '任意の文字列');

2.データベースの設定

あらかじめphpMyAdminにてホストをローカルで設定したユーザとターゲットのテーブルを作成しておく

f:id:tama-jp:20130511183335p:plain

「database.php.default」を「database.php」に変更し修正
mv /Applications/MAMP/htdocs/cakephp/app/config/database.php.default /Applications/MAMP/htdocs/cakephp/app/config/database.php
open /Applications/MAMP/htdocs/cakephp/app/config/database.php

ログインとパスワードを編集する

f:id:tama-jp:20130511183411p:plain

これで、URL「http://localhost:8888/cakephp/」にアクセスし問題ないか見てみる
こんな風にでていてばOK!!

f:id:tama-jp:20130511184841p:plain

一番下の警告はデバッグに関してなのでほっておいていい。

3)コマンドラインからのパス設定

bakeコマンドなどを使うと標準のPHPが動作してしまうらしく、

エラーが出てしまうので、パスを変更。

vi ~/.bash_profile php

f:id:tama-jp:20130511185743p:plain

 

これで、「bake」をつかっても大丈夫なはず。

メモ代わりに書いてみた。ようやくこれで勉強できるε-(´∀`*)ホッ

AppCodeの初期設定

久しぶりの投稿かな?

PHPStormやWebStormでも有名なJetBrainsのObjective-C用のIDEの私が使用している「AppCode」。

デフォルトだとちょいと使いにくいので設定の変更のメモ。

JetBrains製だとたぶんどれでも使えるはず。まだ試してないけど。

 

0.設定画面の出し方(mac)

コマンド + ,

 

1.行番号を表示する方法

「show line number」で検索してから、Editor→Appearanceと選択し、フォーカスされたチェックボックスをチェックする

 

2.エディタのタブの表示を1行で行う設定を解除する

「Show tabs single row」で検索してから、フォーカスされたチェックボックスを外す。

 

3.エディタのタブの表示のリミット数を増やす。

「tab limit」で検索してから、テキストボックスの数字を多くする。

(100ぐらいにしときゃそうそう、リミットは超えないですw)

 

4.スペースを表示する

「show whitespace」で検索してから、Editor→Appearanceと選択すれば、設定項目がハイライトされています。

 

5.行末尾のキャレット配置を無効にする方法

「Allow placement of caret after end of line」で検索してから、フォーカスされたチェックボックスを外す。

 

そろそろ、本格的にプログラム組まなきゃなぁ。。。。

Facebookのスライド式のプログラムを作ってみた。

最近、全然書けてなくて どうしようかと。。。

 

ということで、桜も散りそろそろ心はゴールデンウィークかとw

次の仕事があるか探しつつ、いろいろ勉強をしている今日この頃です。。。。

 

最近、Rubyも勉強し直してRubyMotionでiOS開発しようかと思ってますが、この頃他のものを買いすぎて金欠気味なのでしばらくお預け・・・・・っで、ねたがないし、今書いているソースのプロトを紹介しようかなとね。

 

っで、最近流行りのFacebookiPhoneのUI(スライドするやつね)をまねてみようとここ数日間調査してみました。

それで、いろいろ探して、ついに、いいのが見つかりました。

SWRevealViewController for iOS

というもの。

 

f:id:tama-jp:20130413212911p:plain

 

StoryBoardでFaceBookでスライドを実現出来るオープンソースであるみたいです。BSD Licenseなんで商用でも使えますね。

おぉ!!ちゃんとスライドするじゃ〜〜〜ん♡φ(゚Д゚ )フムフム…これ採用しようかな!!べんりだ!!

 

って、おもって使い・・・。。。あれ?左っかわだけしか出来ない?あれ?説明は?しゃーない、ソース解析?あれ?よくわからん?

わたしばかぁ?σ(^◇^;) Demoを使った感ではすごくいいけどなんか使うのがすごく複雑そうだわ。え〜〜い。自分で作ろう!!っと( ̄∇ ̄)

 

っで、作っちゃいました。

各々のUIVewにコントロールクラスを搭載出来るようになって、右側も別メニューの判別出来るようになったヾ(^v^)k。

Demoがこちら。。。

 

これ、書いた行数300行(うち100行は自動生成)で作れちゃうです( ・_・;)

ヒントとしては、ChildViewControllerとUINavigationControllerを組み合わせたら簡単にできます。

iOS5で新たに追加されたChildViewControllerであって、上に載っかってるUIViewにコントローラが載せられるのです。そのため、上の操作を1枚のコントロールクラスで制御しなくできる様になりすごく楽です。

iOS5から、意外とすごい機能があるので勉強不足だなって思います。

注)ソースは次期案件で使う可能性があるのでお見せすることが出来ないのです。って、ググってみたらいろいろな人がやってますんで、自力で調べてください。 もうしわけない。m(__)m

最初に紹介したオープンソースで十分いろいろと出来ると思うのでそちらをお使いください。

 

エイプリルフールがやってきましたw

今日はエイプリルフール。
日本でも、嘘を書くのがだいぶん浸透してきたようですね。

でも、わたしゃ嘘つきだから、今日ぐらいほんまのことをw
あっ、ご無沙汰してるからこれ自体がエイプリルフールかも(^_^;)

今日のGoogleMapは恒例のふざけた地図になってるようです。
去年は8bit風RPGマップになってたんですが、今年もやってくれましたw(⌒▽⌒)

iPhoneアプリからはまともに出るんですがそのままモバイルSafariで見ようとすると!!なんと、宝の地図にw
本日限定でしょうからお早めにアクセスしてみてはどうですか?w(^◇^)


f:id:tama-jp:20130401084342j:plain
黄金の国ジパング!!
f:id:tama-jp:20130401090027j:plain
富士山やら何やらw
f:id:tama-jp:20130401090059j:plain
京都。なぜか忍者がw
f:id:tama-jp:20130401090206j:plain
地元を出そうとしたんですが
これ以上大きくならない(´・_・`)

同志社精神!!

 

今年、大河ドラマ新島襄の奥さんの話で

母校である同志社の名前が出てくれることは非常にうれしいです。

 

 

特に新島襄の意志が少しでも全国に伝わればなぁと。

つまり、同志社精神というのをみんなに知ってもらいたいなと感じます。参考

 

 

別に、キリスト教を信仰しているわけでもないですが、

今一度、家庭も仕事と共に良心の全身に充満になれたらなと。。。。

 

同志社チア〜!!

One, two, three,

Who are we?

La, la, la, Doshisha!

One, two, three,

Who are we?

La, la, la, Doshisha!

One, two, three,

Who are we?

La, la, la, Doshisha!