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」を編集。
初期値以外のものに変更する。
Configure::write('Security.salt', '任意の文字列');
Configure::write('Security.cipherSeed', '任意の文字列');
2.データベースの設定
あらかじめphpMyAdminにてホストをローカルで設定したユーザとターゲットのテーブルを作成しておく
「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
ログインとパスワードを編集する
これで、URL「http://localhost:8888/cakephp/」にアクセスし問題ないか見てみる
こんな風にでていてばOK!!
一番下の警告はデバッグに関してなのでほっておいていい。
3)コマンドラインからのパス設定
bakeコマンドなどを使うと標準のPHPが動作してしまうらしく、
エラーが出てしまうので、パスを変更。
これで、「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開発しようかと思ってますが、この頃他のものを買いすぎて金欠気味なのでしばらくお預け・・・・・っで、ねたがないし、今書いているソースのプロトを紹介しようかなとね。
っで、最近流行りのFacebookのiPhoneのUI(スライドするやつね)をまねてみようとここ数日間調査してみました。
それで、いろいろ探して、ついに、いいのが見つかりました。
SWRevealViewController for iOS
というもの。
StoryBoardでFaceBookでスライドを実現出来るオープンソースであるみたいです。BSD Licenseなんで商用でも使えますね。
おぉ!!ちゃんとスライドするじゃ〜〜〜ん♡φ(゚Д゚ )フムフム…これ採用しようかな!!べんりだ!!
って、おもって使い・・・。。。あれ?左っかわだけしか出来ない?あれ?説明は?しゃーない、ソース解析?あれ?よくわからん?
わたしばかぁ?σ(^◇^;) Demoを使った感ではすごくいいけどなんか使うのがすごく複雑そうだわ。え〜〜い。自分で作ろう!!っと( ̄∇ ̄)
っで、作っちゃいました。
各々のUIVewにコントロールクラスを搭載出来るようになって、右側も別メニューの判別出来るようになったヾ(^v^)k。
Demoがこちら。。。
これ、書いた行数300行(うち100行は自動生成)で作れちゃうです( ・_・;)
ヒントとしては、ChildViewControllerとUINavigationControllerを組み合わせたら簡単にできます。
iOS5で新たに追加されたChildViewControllerであって、上に載っかってるUIViewにコントローラが載せられるのです。そのため、上の操作を1枚のコントロールクラスで制御しなくできる様になりすごく楽です。
iOS5から、意外とすごい機能があるので勉強不足だなって思います。
注)ソースは次期案件で使う可能性があるのでお見せすることが出来ないのです。って、ググってみたらいろいろな人がやってますんで、自力で調べてください。 もうしわけない。m(__)m
最初に紹介したオープンソースで十分いろいろと出来ると思うのでそちらをお使いください。
エイプリルフールがやってきましたw
同志社精神!!
母校である同志社の名前が出てくれることは非常にうれしいです。
特に新島襄の意志が少しでも全国に伝わればなぁと。
つまり、同志社精神というのをみんなに知ってもらいたいなと感じます。参考
別に、キリスト教を信仰しているわけでもないですが、
今一度、家庭も仕事と共に良心の全身に充満になれたらなと。。。。
同志社チア〜!!
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!