2014年4月25日金曜日

UINavigationControllerで自動表示される「前画面に戻る」的なボタンを非表示にする。

UINavigationControllerを利用していると(いえ、どんな場面でもあり得ますが)、時々前の画面に戻ってほしくない時があります。

表示が主なアプリなら良いのですが、「編集処理をしている途中に戻られると厄介」なんて事もあります。

そんな時に邪魔な「UINavigationControllerの戻るボタンを消す」のが以下のコード


 [[self navigationItem] setHidesBackButton:YES];


これでok


2014年4月10日木曜日

アプリのアップロード時に「improper advertising identifier [IDFA] usage. your app contains the advertising identifier [IDFA] api but you have not indicated its usage on the prepare for upload page in itunes connect」というメッセージが出る

アプリのアップロード時に以下のメッセージが表示される。

improper advertising identifier [IDFA] usage.
your app contains the advertising identifier [IDFA] api but you have not indicated its usage on the prepare for upload page in itunes connect
直訳
不適切な広告識別子[IDFA]使用法。 
あなたのアプリは、広告識別子[IDFA] APIが含まれていますが、あなたは接続iTunesのアップロードページの準備にその使用法を示していない。
itunes connetで毎回質問される英文の内容をよく読まないでチェックつけてサブミットしたせいかと思うけど、一回アップして手動リジェクトしないと確認出来ないので、よくわからない。
(そもそもアップが出来ないので・・・)

対応としては、AdSupportのフレームワークを外すと通ります。

調査不十分で申し訳ないですが取り急ぎ。


追記(2014-04-28)

続報です。
http://startup-objc.blogspot.jp/2014/04/improper-advertising-identifier-idfa_25.html

2014年3月8日土曜日

UIRefreshControl を使って引っぱり更新をする。

iOS6で追加された引っぱり更新用のUIRefreshControlですが、先日私事でiOS5の呪縛から逃れたのでメモメモ。

※ちなみにiOSの6と7ではUIのビジュアルが違いますが、個人的にはiOS6の方が好きですが、手元に環境がないのでこの例はiOS7です。

UITableViewControllerにrefreshControlのプロパティがあるので、画面の初期化の時に設定。
UIControlEventValueChangedでイベントが取得出来るので、その設定も忘れずに。

// リフレッシュコントロール
[self setRefreshControl:[[UIRefreshControl alloc] init]];
[[self refreshControl] addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];

イベントの受け取りメソッドも定義。


- (void)refresh:(UIRefreshControl *)control
{
    // 回転開始
    [[self refreshControl] beginRefreshing];
    
    //
    // 処理
    //
    
    // 回転終了
    [[self refreshControl] endRefreshing];
}

「beginRefreshing」と「endRefreshing」でインジケーターの回転のタイミングを調節できるので、これでやりたい処理を挟みます。


こんな感じ。

2014年3月7日金曜日

segmentedControlStyle でワーニングが出る

[[self _segmentedControl] setSegmentedControlStyle:UISegmentedControlStyleBar]; 
こんな指定をしているとiOS7から以下の様なワーニングが表示されます。
'UISegmentedControlStyleBar' is deprecated: first deprecated in iOS 7.0 - The segmentedControlStyle property no longer has any effect
ワーニング内容からもわかるように、 segmentedControlStyleにはもう何の効果も無いようです。

廃止されてしまいました。

代替のプロパティも無いようです。

iOS7専用アプリの場合は、指定を消してしまってかまわないようです。

2014年3月6日木曜日

XcodeでMissing fileというワーニングが出る

こんなやつです。

これはバージョン管理システムとの不整合で発生するのですが、
なんとも気持ちが悪い。

実際に、このワーニングが出たまま、アプリをAppStoreに申請しちゃってもなんの問題もないし、エラーの原因になる事も無いのですが、ワーニングが出ているだけで精神衛生上よくない。(私は)

なので、消します。

まず、ワーニングをクリックするとコピー出来ます。
これをコピーすると以下の様な文字列がとれます。
file:///Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m: warning: Missing file: /Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m is missing from working copy
これの前半の
file:///Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m
の部分が必要になります。

この文字列の前にsvn rm をつけます。
あとfile://をとります。
svn rm /Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m
これをターミナルに貼付けて実行!


これでok

ちょっと伏せ字が多くてすいません。


2014年2月15日土曜日

UITableViewの編集モードの「Delete」文字列の変更

UITableViewの編集モードの文字列が「Delete」なので変更したい時があります。

そんな時は「UITableViewDelegate」の「- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath」メソッドをいじります


    
//
// UITableViewDelegate
//
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"削除";
}

こんな感じ

自動的に幅も変わります。

2013年12月30日月曜日

UITableViewでセル選択をしない様にする。

UITableViewでセル選択をしない様にする、、というか選択したすぐさま選択を解除する。

とりあえず、コードを見てみる。

    
//
// UITableViewDelegate
//
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    return ;
}

「didSelectRowAtIndexPath」は選択した時のdelegateメソッドですが、すぐさま「deselectRowAtIndexPath:indexPath」を利用して、選択解除状態にします。

これで、テーブルを利用した「単純なリスト」の作成が出来ます。
この方法を利用すると、いちいち位置替えをするのが楽になります。