kubou.dev();

好きな言葉は一石二鳥

プログラミング

XcodeのプロジェクトをコピーしてiOSアプリを複製する

1. Finderで oldディレクトリをコピーして、newにリネーム。 newディレクトリ内のold.xcodeprojを開く 2. Xcodeで 左ペインでPROJECTを選択。 右ペインのIdentity and Type > Nameをnewに変更。 変更の影響範囲を確認するダイアログが表示されるので、「Rena…

Storyboradが見つからない時の対処法

Xcode上でiPhoneシミュレータを起動すると、一瞬でアプリが落ちた。 エラーは以下のような内容。 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'Main' Main.storyboardが見つからないとのこと。 解決方法はstack overflowを参…

NSNotificationCenterの使い方

iOSアプリのさまざま状態を監視して、マッチしたときに通知できる「NSNotificationCenter」。 わざわざdelegateメソッドを使わなくてもいいから便利です。 よく使うのは以下の監視状態。 UIApplicationDidFinishLaunchingNotification : アプリケーションが…

あるUIViewがすでにaddSubViewされているか判定したい

あるUIViewがすでにsuperViewにaddSubViewされていた場合に、これ以上addSubViewしたくない時は以下の判定文を書けばおk. if(![mySubView isDescendantOfView:superView]) { // 存在していない } else { // 存在している }

NSDictionaryの中身をループで取得したい

使うときにはいつも忘れているのでメモ。 keyとvalueが欲しいとき for (id key in dictionary){ NSLog(@"%@,%@", key, dictionary[key]); } valueが欲しいとき for (id value in [dictionary objectEnumerator]) { NSLog(@"%@", value); }

Objective-Cでfor文中に要素を変更しようとしたらエラー「Collection was mutated while being enumerated.」

列挙子を使ってアクセスしてる時に要素変更しないでねということ。 順番に処理してるのに、要素を削除したりしたら順番狂っちゃうから発生。 調べてみると、reverseObjectEnumeratorを使って逆順に列挙すればokみたい。 for (id obj in [array reverseObject…

SDWebImageを使用していたら、アーカイブだけエラー

SDWebImageを使用したiPhoneアプリで、シミュレータ・実機ともに正常に動作するのにアーカイブだけエラーが出るという現象に遭遇。 エラーはこんなの。 Unknown register name ‘q0′ in asm 調べてみると、if defined(ARM_NEON)という記述をif defined(_ARM_A…

UITableViewで余分な境界線を非表示にする。

UITableViewで2行だけデータを表示したいとき。 残りのcellには何もデータがないのに、境界線だけ表示されてしまってなんか気持ち悪い。 それを解決するのに一番簡単っぽい実装はこれ。 self.tableView.tableFooterView = [[UIView alloc] init];

JSONModelで必須でない項目を設定する - Objective-C

例えば、APIの返り値が「id=1, name=foo, address=bar」だった場合で、受け取り側には「id, name, address, age」が設定されていた場合。 Incoming data was invalid -- . Keys missing:age みたいなエラーが表示されます。 軽く調べたら、 @property (nonat…

NSDictionaryの配列からNSPredicateで検索するには。

NSDictionaryの配列からNSPredicateで検索するには。 ちなみに普通に文字列の配列だった場合は、以下のように書く。 NSArray *myArray = @[@"value1", @"value2", @"value3"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c…

UITableViewCellを最初から選択状態にする

viewDidAppear内に下記を記述。 for (NSString *key in myArray) { // 仮にmyArrayに1から数値が入っていた場合は、[key intValue] - 1とするだけ。 NSIndexPath *indexPath=[NSIndexPath indexPathForRow:[key intValue] inSection:0]; [myTableView select…

NSDictionaryをforでまわすと順序が保証されない(高速列挙)

NSDictonaryをなんとなく高速列挙してたら、期待している通りの順番で返ってこなかったのでメモ。 // この書き方だと、順序が保証されない。1,2,3とは返ってこない。 for (id key in dictionary) { NSLog(@"%@", key); } NSArrayのsortedArrayUsingComparato…

iOS7 - スクロールでステータスバーは残しつつ、ナビゲーションバーは隠す動きを実現。

Facebookアプリみたいに、下にスクロールするとナビゲーションバー「だけ」を隠したい。 少しハマったのでメモ。 #普通に実装してるとステータスバーまで消えてしまった。それは意図した動きではない。 こんな感じにしたい [caption id="attachment_219" al…

UTF-8で作成したrubyスクリプトをwindowsで動かそうとしたら、ファイル読み込み時の文字コードでハマった。

macで作成したrubyのスクリプトをwindowsで動かそうとしたらハマったのでメモ。 windowsが文字コード:Windows31-Jでファイルを読み込もうとするので、UTF-8で読み込むように指定しないとダメだよということ。 # -*- encoding: utf-8 -*- Dir.glob(DIRNAME +…

UIWebViewのロードが終わる前に戻るボタン押下で落ちる場合の対処法

UIWebView をリリースする前に delegate に nil を代入。 webView.delegate = nil;

jQueryMobileのスタイルを部分的に無効にする

data-role=”none”を付け加える <a href="" data-role="none">検索</a>

iOS6でモーダルビューで落ちる。

"reason: 'A view can only be associated with at most one view controller at a time!" ・rootViewControllerに対して、1つのみviewが配置されている場合に起こりがち。 rootViewControllerを外して、view単体にすると治る。 [参考:stackOverFlow] http:…

smartyにてvar_dumpする

{$userProfile|var_dump} もちろんvar_dumpだけでなく、print_rなどの関数も使える。

ボタンをタップしてアクションシートを呼ぶ

-(void)tapShopRegist { UIActionSheet *as = [[UIActionSheet alloc] init]; as.delegate = self; as.title = @"タイトル"; [as addButtonWithTitle:@"選択肢1"]; [as addButtonWithTitle:@"選択肢2"]; [as addButtonWithTitle:@"キャンセル"]; as.cancel…

モーダルビューを閉じる方法(iOS5以降)

[self dismissViewControllerAnimated:YES completion:nil];

特殊文字をエスケープ

モーダルビューを取得する

UIViewController *viewController = [self.navigationController.viewControllers objectAtIndex:0]; NSString *modalClassName = NSStringFromClass([[viewController.modalViewController.childViewControllers objectAtIndex:0] class]);

googlemapの設置。クリックした場所(常に1つだけ)のマーカーの緯度経度を取得する。もしくは、マーカーを常に中心点に設置する。

■動作概要 ・googlemapの任意の場所をクリックしたら、過去にクリックしていた場所のマーカーは削除し、新しくマーカーを設置する。 変数:locationは緯度経度が入っている。 →正確にはevent.latLngプロパティに入っている。 var mapCanvas; var cmap; var ma…

UIImageViewにて、画像を自動リサイズ

self.contentMode = UIViewContentModeScaleAspectFill; self.clipsToBounds = YES; UIViewContentModeScaleToFillViewのサイズと画像のサイズが同じになります。 UIViewContentModeScaleAspectFitアスペクト比を維持したまま、画像のすべてが表示されるよう…

アラートの出し方

・ボタンを1つ表示する場合 -(void)hoge { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"完了" message:@"hogehoge" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } ・ボタンを2つ表示する場合 UIAlertVi…

文字列の空文字判定

if (![str isEqualToString:@""] &amp;&amp; ![str isKindOfClass:[NSNull class]]) { // 文字列が空でない場合 }

NSMutableArrayに配列を追加

[_sceneListModel addObjectsFromArray:model];

文字列の比較

[user.REPEATFLG isEqualToString:@"1"]

三項演算子

shopnameLabel.text = (shopModel.SHOPNAME != @"" &amp;&amp; ![shopModel.SHOPNAME isKindOfClass:[NSNull class]])?shopModel.SHOPNAME:@"hogehoge店";

NSMutableArrayを別インスタンスにコピーする

NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];