hachinoBlog

hachinobuのエンジニアライフ

Objective-C

選択したUITableViewCellの値を動的に変えたい場合

//選択したCell値の変更 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //後続処理 }これで選択されたCellの情報を取得できるの…

簡単な事だけど注意

setDelegateでセットしたらdeallocでsetDelegate:nilを入れてあげる事。 当たり前のことだけど、それをしていなくてTextFieldで毎回こけてて悩みまくった。。

iOS4.2.1のバグ

UIAlertViewでパスワード認証をしていたところ、正確なパス入力後にアプリが落ちた。 この事象はiOS4.2.1のみ。 原因としてはアプリ起動時にUITextViewのキーボードが日本語になっているかつsecureTextEntryがYESになっている場合に発生。 これもハマった。…

UITableViewControllerの画面へ遷移する場合

UITableViewControllerの場合はUIViewControllerとは違い UITableViewController *vc = [[UITableViewController alloc] initWithStyle:UITableViewStyle〜];で作成してNavigationとかで遷移させる。 nibを読み込ませようとしてずっとこけてた。。簡単な事で…

UIAlertViewの非同期処理を遅らせる方法

ドハマりしたからメモ〜。 パスワード認証とかで認証がOKだったら次の画面に遷移とかを実装してたんだけど UIAlertViewのデリゲートは非同期処理だからデリゲート処理が終わる前に次の処理に流れてしまっていたので苦労した。。 デリゲートの処理(ボタンを押…

iPhoneアプリ申請の審査基準

こんな感じになってるみたい。 http://fladdict.net/blog/2010/09/reject-list.html

継承した時のコーディング

viewdidloadに色々な処理を書くもんじゃないなと。。 継承したクラスからオーバーライドしようにもviewdidloadに色々書かれてたんじゃ 意味がない。。 今更ながら気づきましたorz

GroupedスタイルのTableViewのbackgroundColorについて

とてつもなくハマった。。 GroupedスタイルのTableViewの下にUIImageViewで背景画像を設定したので 当然、TableViewのbackgroundColorをclearcolorにしてやればiPhoneはOKなんだけど iPadは何度やってもグレーになってしまう。。解決法: 犯人はUITableView…

UITableView Groupedで角が黒くなってしまった場合

xibファイルでTableViewのStyleをGroupedに指定して背景画像の上に載せるのでBackgroundをClearColorにしたが 表示を見るとグルービングされたセルの角が黒く直角になってしまった。対処法としてはxibファイルからでなく、プログラムでBackGroundをClearColo…

warning: Unable to read symbols for 〜 (file not found). による警告

実機にアプリをインストールして動かすとコンソールに warning: Unable to read symbols for /Users/[username]/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriver (…

NSIntegerの宣言

超初級だけどよく間違えるからメモ NSIntegerの宣言は変数の前に * 不要! アスタリスクつけるとWarningになっちゃう

インスタンス変数の初期化

インスタンス変数を下記の用に定義した ClassA *a; この時点で期待していたインスタンス変数の値はnil しかし if (a == nil) {} で判定した場合、華麗にスルーされた インスタンスの定義は明示的にするべしということ ClassA *a = nil;

The model used to open the store is incompatible with the one used to create the store の対処法

DBの定義ファイルをいじった後に前回のsqliteファイルが残っていると データ形式が違うといって出るエラー。 アプリにあるsqliteファイルを削除してやることで解決する。 場所は /Users/[ユーザー名]/Library/Application Support/iPhone Simulator/[version…

CoreDataのFrom句Select句

CoreDataのSelectカラム指定方法。 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entitydesc = [coreDataManager entityDescription:@"TableName"]; //from句(テーブル指定) //ここからカラム指定 NSMutableArray *…

NSTimerの解放

NSTimerオブジェクトはinvalidateメソッドを呼んでタイマーを止めてやらないと deallocが呼ばれない。参考URL http://i.studio23c.com/?p=141 http://akisute.com/2009/05/nstimerretainassign.html

UIToolBarにUISegmentedControlを挿入する方法

UIToolBarにUISegmentedControlを挿入するときに 通常のボタンのようにNSArray型にUISegmentedControlを突っ込んでから self.toolbarItems に代入しようとしてもアプリが落ちてしまう。 解決策としては、UIBarButtonItemのinitWithCustomViewにUISegmentedCo…

code sign error [provisioning profile] can't be found 対処方法

Xcodeの[PROJECT]のAny iOS SDKの部分で指定するprovisioningファイルでなくて Xcodeの[TARGETS]の方でもprovisioningファイルを指定できる。 そこで指定しているprovisioningファイルがおかしい場合に出るみたい。参考URL http://icotfeels.blog66.fc2.com/…

UIButtonの文言を右、左寄せにする方法

UIButtonのタイトルを設定するとデフォルトで中央寄せになる。 これを変えるにはUIButtonにラベルを載せたりと色々やり方はあるけど一番簡単なのは contentHorizontalAlignmentプロパティーを使う方法。 UIControlContentHorizontalAlignmentRight 右寄せ UI…

Error Starting Executable '[App名]'

ビルドしてこいつが出たらXcodeを一度再起動してからビルドし直す。 念のためデバイス側のアプリも消去しておく方が確実らしい。参考URL http://d.hatena.ne.jp/captainshadow/20110809/1312862261

Objective-Cでカレンダーの実装

カレンダーはAppleからカレンダーViewのAPIが公開されていない。 カレンダーを使用したければ自分で実装するしかない。。既に作成した人がライブラリを公開してくれている http://meme.efcl.info/2011/08/ui.htmlこの中でも特にオススメは https://github.co…

deviceToken(NSData型)をNSString型に変換する際

NSData型は本来であれば NSData* aData; aData = [aStr dataUsingEncoding: NSASCIIStringEncoding];上記でNSString型に変換できるが、deviceTokenには先頭に 終端に > 文字列の間に空白が入っているので上記の変換方法でやってもnullが返ってきてしまう。 …

NSUnknownKeyExceptionについて

起動画面のViewControllerをMainWindow.xibから修正してアプリを起動させたら、 NSUnknownKeyExceptionでアプリがこけた。 ぐぐるとアウトレットとして宣言してあるプロパティの名前が、nibファイル内に記録されている情報と食い違っている場合に起こる現象…

共通のint型変数などを他のクラスと共有したい場合

int型とかを@property する場合は @property (readwrite) int num; のように(readwrite)で宣言してあげると警告がでない。

テーブル表示でメールアプリのように右側に件数バッジを出す方法

オープンソースで既に実装してくれている人がいるので、そのAPIを使用すれば簡単。 参考URL http://golog.plus.vc/iphone/objective-c/1349/ ←はセルとして定義しているので今の自分のスキルではバッジのViewだけを抜き出すのは無理だったorz http://akabeko…

plistからテーブルに表示する際のセクション順指定

まずplistから情報を読み込んでNSDictionaryに突っ込むが、格納される順番はplistの順番じゃない。 //情報をplistから取得 NSString *filePath = [FileUtils makeResourceFilePath:sample.plist]; NSDictionary *sectionDic = [[FileUtils dictionaryWithCon…

UIViewで後ろにあるViewを認識させる方法

UIViewのaddSubViewでViewを載っけた時、載せたViewのサイズがでかいと その下にあるViewのボタンなどを押しても認識されなくなってしまう。 だけど、UIViewのsetUserInteractionEnabled:NOに設定すれば後ろにあるViewも認識するようになる。…こんな簡単なこ…

xibファイルでCustomを利用すると

addSubViewしちゃうとその下側にあるViewを制御できなくなってしまう場合。 (UIScrollViewの上にViewを載せた場合とか) そういった時はxibファイルのCustumクラスで専用のクラスを指定する。 例: UIViewを継承したクラスを作成して、そこに図形を描く処理…

UINavigationBarにUIBarButtonItemを複数埋め込む方法

はまった。。 UIViewにUIBarButtonItemをaddSubして、そのViewをNavigationControllerのrightBarButtonItemに 突っ込めば良いと思ってたけど、そもそもUIBarButtonItemはUIViewにaddSubできない。。色々試したけあげくたどり着いたのはUIToolbarを定義して、…

push通知実装時の初回起動時表示アラートの出し方

push通知機能を使用したアプリで初回起動時のみに表示される確認アラート。 このアラートは本当に初回起動時にしか表示されず、アプリを一度削除して、再度インストールしても、このアラートは二度と表示されない。再度表示した場合は次の手順を踏む ・その…

Code Sign Errorについて

Code Sign Errorにハマった Code Sign error: Provisioning profile 'develop' specifies the Application Identifier 'jp.develop.jsap' which doesn't match the current setting '.test.jp'これはプロジェクトのCode Signingで指定しているProvisioning F…