トップページ⇒mac
1001コメント350KB

[SDK]iPhoneアプリ開発初心者質問箱34[touch][iPad]

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名称未設定2013/08/19(月) NY:AN:NY.ANID:ykyhR6cZ0
iPhone, iPod touch用アプリケーションの開発を始めたばかりの初心者向け質問スレ。

■質問する前に■
1. 質問は日本語もしくはObjective-Cで
 質問に質問で返されても逆切れしない。それは質問の仕方が悪いってことだよ。
2. どういう内容であれレスをもらったら報告とお礼の言葉を忘れずに。
 回答者は自分の時間を使って親切で回答してくれています。
3. 回答者は自分も初心者であった事を忘れずに。
4. マルチポスト(複数のスレに同じ質問を書込むこと)は厳禁!
5. 質問は可能な限り具体的に。
 ただ「エラーが出ます」ではエスパーかスタンド使いでなければ答えられません。
 エラー内容をちゃんと書きましょう。
6. わからない部分のコードをコピペすると手っ取り早いです。
7. このスレは無料プログラミング教室ではありません。
 「○○の仕方を教えてください」という質問はなるべく避けてください。
 「自分で調べたけどわからなかった事」を質問するというスタンスを忘れずに。
8. バグを安易にOSや開発環境のせいにしない。
 自分の知識の無さを棚に上げて人のせいにするなんて百年早い。

■関連スレ
iOSアプリ 個人開発者の雑談スレ13
http://anago.2ch.net/test/read.cgi/mac/1369912531/

iPhone iPad iOSプログラミング Part1
http://toro.2ch.net/test/read.cgi/tech/1314086681/

【脱獄】iPhoneのJailbreakアプリ開発スレ
http://anago.2ch.net/test/read.cgi/mac/1337945208/

※前スレ
[SDK]iPhoneアプリ開発初心者質問箱33[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1370485786/
0855名称未設定2013/10/11(金) 22:57:37.00ID:DNjnoOJk0
ユーザーが自分のオリジナルクラスにデリゲートをつけることも
Objective-Cの仕様的には可能だが、
そんなおそろしくめんどくさいことをする意味もなく。
あれはApple様が「こういう時になんかさせたいでしょ?」とあらかじめ
既存クラスにわざわざつけてくれている条件分岐点。
「なかったら」なんて考えたくもない。
0856名称未設定2013/10/11(金) 23:16:19.84ID:1PQGOMZ50
>>855
>Objective-Cの仕様的には可能だが、
>そんなおそろしくめんどくさいことをする意味もなく。
ほーっとしか言えないな。これも>>854が言うのを理解できればそんなことは全く無いのだが...

>>853
最初は単なるCallbackだと思えばいいよ。Callbackってなんやねんってのには...まあ「最初は単なるCallbackだと思えばいいよ」は思わない方がいいか...
0857名称未設定2013/10/11(金) 23:25:42.72ID:osKbPlqS0
デリゲートの名前通り処理を委譲するんだよ
それ以上でもそれ以下でもないよ
0858名称未設定2013/10/11(金) 23:35:10.44ID:1PQGOMZ50
ただの通知のようなデリゲートメソッドもあるけどね
0859名称未設定2013/10/11(金) 23:53:22.20ID:E/heBg5o0
デリゲートなんざ古い。
時代はBlocks。
BlocksKit便利だよ。
0860名称未設定2013/10/12(土) 00:14:40.22ID:xqhboEnj0
そもそもc言語みたいに
上からコード書いていって順番に実行されるの形だとすごい分かりやすいけど

iphoneアプリ開発は

オーバライドで実装していくとか、よくいみわからんわ!!
むずかしいんげーとやんわ!!!!11
0861名称未設定2013/10/12(土) 00:17:41.73ID:v8wNWu/c0
んー、イベント駆動型(?)はどれも同じようなもんだけど
形こそ違えどれも同じような機構があるし
先は長いな。頑張れ。愚痴は書かなくていいよw
0862名称未設定2013/10/12(土) 00:24:26.94ID:xqhboEnj0
うるちゃい!
0863名称未設定2013/10/12(土) 00:36:54.68ID:qpiY2Edj0
自分がイベントの主催者だと思えばいい。
スタッフAに、ある仕事をするように言う。
するとスタッフが、仕事をしていてこうなったらどうしたらいいですか、と聞いてくる。
それはそのときになったらBさんに指示を仰いでください、と言う。
スタッフBに、こんなときはAさんにこう指示してください、と言う。
AさんがBさんに指示を仰ぐ、これがまさにデリゲートだ。
0864名称未設定2013/10/12(土) 00:46:05.66ID:H1QXFvaoP
なんという分かりにくさ...
0865名称未設定2013/10/12(土) 00:58:09.45ID:BuF/cxmJ0
わかりやちゅい!!
0866名称未設定2013/10/12(土) 01:05:50.27ID:bdrvgqiV0
>>860
簡単だっつーのw 1.プロトコルに準拠する 2.delegateにselfを突っ込む

例えばUIScrollViewDelegateなら
@interface ViewController : UIViewController <UIScrollViewDelegate> ---(1)

scrollView.delegate = self; ---(2)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { ---(1)
//こいつがscrollViewから呼ばれる
}

超簡単に言えばこれだけの仕組みだ。(optionalの場合な)
requiredは全部実装すること。

UIButtonのaddTargetってやつにselfとSELを渡すだろ。
あれのセレクタを指定しない版だと思えばいい。
0867名称未設定2013/10/12(土) 02:56:50.04ID:8emYS1li0
>>860
C言語の(外部への影響を無くすため)"関数"ごとに独立した単位にする。ってのを一歩進めて
"クラス"という単位に平文で「こうしろ」という"メッセージ"を送るようにする。
決めたメッセージを解釈して対応するのは各クラスの責任。と決めて役割分離することで
プログラマーが「変数に1が来たら再生、2が来たらストップ、3が来たら巻戻し…」みたいな
『誰が何をどうするとどうなるのかの確認に常に忙殺される』事態を防ぎ
独立したパーツとしてのクラスの独立性を担保し、
さらにはクラスを使い回す時に単純に派生クラスのメッセージに対する
反応を書き換えるだけで振る舞いが変えられるじゃん!というアイデアです。

C++とかがCに"使い回し"の部分だけを即物的に取り入れて混乱が収まらないのと逆に
Objective-Cの基本はわかりやすい平文メッセージで「こうしろ」と
クラスに命令する形にすることで機械や環境に依存する
○○型データ同士の直接やりとりから一歩離れて
クラスの取り回しをもっと手軽にしています。
だから、他言語だと教科書の概念的なもんで現場じゃ使わないだろwww?的な
オブジェクト指向がガスガス使われまくっていて異次元感覚いっぱいです。
がんばれ
0868名称未設定2013/10/12(土) 03:41:17.25ID:MC23hbST0
何本もアプリを作ってきたけどいまだにデリゲートの使い方は分かるけどなんなのかは理解していない
0869名称未設定2013/10/12(土) 03:48:11.82ID:Lk31nuQdi
ProductからArchiveして、OrganizerでValidateすると下記のエラーが出てしまいます。自分の力量不足でググったり調べてみたんですが原因がわかりません、どなたか教えて頂けないでしょうか・・・。

The bundle identifier cannot be changed from the current value, ‘com.自分のbundle identifie’. If you want to change your bundle identifier, you will need to create a new application in iTunes Connect.
0870名称未設定2013/10/12(土) 04:33:12.62ID:3WNJc+uh0
plistのbundle identifierがその値と違うのでは?
0871名称未設定2013/10/12(土) 05:16:37.03ID:Lk31nuQdi
>>870
plistのbundle identifierもAppIDのbundle IDも一致してるのになぜか出るんです・・・。

一応一回弄ってしまったので、今日新しいプロジェクトでAppIDを作成しなおして一致してるのを確認してからValidateしてみたんですがまた同じエラーが出てしまったので原因が他にあるのかと思ったんです・・・
0872名称未設定2013/10/12(土) 08:39:10.13ID:rd5JoqLW0
delegateはそこまで難しい話じゃないよ。

scrollView.delegate = self;
なんてよく書くだろ。

これはUIScrollViewで宣言だけされてる処理を俺のところで使わせてくれって話。
UIScrollViewみたいに自分でdelegateを用意して、誰かに使ってもらうことができる、と考えたらわかりやすい。

自分で用意する場合は、delegateの宣言とdelegateがセットされたら、セットされたdelegateから呼び出すようにしておけばいい。
0873名称未設定2013/10/12(土) 09:34:04.13ID:FdUBLArO0
つか、appleのドキュメント読んでdelegateも理解できないような人間に
ここで書かれた内容を理解できるとは思えないんだが。
仮に理解できたとしても、その先の内容を理解できるかどうか。

しかも本気で取り組んでるとはとても思えない発言に対して、
よくまぁ、親切に教えようとする気になれるな。
0874名称未設定2013/10/12(土) 09:47:19.16ID:qpiY2Edj0
デリゲートってオブジェクト指向さえ理解してれば何も難しくないと思うんだが、
オブジェクト指向が理解できてないととことん訳わからないんだろうなぁ。
まず「俺のところ」「自分」「誰か」っていうのがなんじゃそりゃだと思う。
プログラムが上から下に流れるだけのイメージからオブジェクト指向の脳に切り替えるまでが一苦労。
0875名称未設定2013/10/12(土) 11:10:44.06ID:4piWmW750
そんな開発者さえわかってない仕様を組み込んだアプリをユーザに使わせているのですね(震え声
0876名称未設定2013/10/12(土) 11:30:35.93ID:ytxmwQ7k0
毎度毎度のことだけど、早く出したいのにAppleのレビューが中々始まらない
ここは改善されることはないのかなあ
0877名称未設定2013/10/12(土) 11:59:17.33ID:3FWfQKK20
ここにいる人はアプリ開発でどのくらい稼いだの?

趣味でやってる人と、仕事でもしてる人がいそうだけども
前者の人にききたい
0878名称未設定2013/10/12(土) 12:11:38.03ID:Raah+yjQ0
>>877
3年で約40万円。
まあ初期投資は回収できたかな。
でも、その開発時間を、試験の勉強にでも充てていれば
東大でも入れただろうな。
0879名称未設定2013/10/12(土) 12:28:27.18ID:dfSMG3c60
妄想乙
0880名称未設定2013/10/12(土) 17:43:32.08ID:uP9Ur/ZOP
delegateは最初はさっぱしわからんかったなー。色々いじっていくうちに慣れてきたんだが…半年以上はかかったか?w
頭いいやつが羨ましいぜよ
0881名称未設定2013/10/12(土) 18:25:06.93ID:qpiY2Edj0
UITableViewを例にしてみよう
テーブル表示だから、当然、アプリや画面によって、表示する内容が違うわけだ
その場合によって異なる内容をどうやって変えるか?
方法はいくつも思いつくが、例えば
1. 直接そのオブジェクトに書き込む (例えば、UIViewで背景色なんかを指定するのと同様に、直接メッセージを送って書き換える方法だ)
2. 継承してサブクラスを作る
しかし、1はテーブルビューのように指定する内容が多いとその周辺(普通は、オブジェクトを生成したあたりだろう)
のコードが長くなってしまうし、Blocks(無名関数)や関数ポインタを使わないと複雑な内容は指定できない
Blocksはともかく、Objective-Cで関数ポインタなんてアナクロなモノはできれば使いたくないだろう
2はただ表示内容を書き分けるだけでサブクラスなんか作りたくない、と思うのが普通だろう
サブクラスを作る、ということは、ニアリーイコールで新しいファイルを作り、新しいクラス名をつけるということだ
Javaと違ってファイルを分ける必要は必ずしもないが、クラス名を考えるのは頭が痛いだろう
しかも、クラスにしてしまうと実際に使うところから離れたところに書かざるを得ないこともあり、可読性も落ちる
(もっとも、UITableViewControllerはやってることはほぼ2に近いが・・・)
(つづく)
0882名称未設定2013/10/12(土) 18:26:31.46ID:qpiY2Edj0
(つづき)
そこで、デリゲートの出番だ
いちいちプロパティ等を使って指定したり、継承したりせず、テーブルビューに「あるオブジェクト」を指定して、
テーブルビューがそのオブジェクトから必要なことを知ることができる方法を考えよう
そのために必要なのは
1. 誰に聞くか?
2. 何をどうやって聞くか?
ということだ。1.は、テーブルビューにプロパティとしてその都度指定するようにしよう
テーブルビューの場合は、delegateとdataSource(名前はデータソースだがやってることはデリゲートの一種だ)だ
delegateとdataSourceに、聞く対象のオブジェクトを指定する
大抵は、テーブルビューを作成するビューコントローラだろう
ビューコントローラのメソッドで、テーブルビューtableViewを作成したあと、
tableView.delegate = self;
tableView.dataSource = self;
とすればいいワケだ。この場合のselfはビューコントローラだから、これでテーブルビューは「ビューコントローラに」聞くことができるようになった
UITableViewControllerを継承して使う場合は、既にテーブルビューの作成とdelegate/dataSourceの指定がされているため、これは不要だ
2. で、聞き方をプロトコルとして宣言しておくことになる。これが、UITableViweDelegateとUITableViewDataSourceだ
例えば、UITableViewDataSourceには、
1. tableView:numberOfRowsInSection:とか、
2. tablewView:cellForRowAtIndexPath:
とかがある。1は、あるセクションに含まれる行の数、2は、実際に表示するセルを寄越せ、という意味だ
これらを上で指定したdelegateとdataSourceで実装しておけば、後はテーブルビューがこれらのメッセージを送り(つまり、メソッドを起動するということだ)
必要になったときに行の数やセルを取得して、表示してくれるというワケだ
0883名称未設定2013/10/12(土) 18:46:12.51ID:Gl1pAq8l0
UIAlertViewについての質問です。練習で書いてるのですが
- (IBAction)button:(id)sender {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"test"
message:@"ok cancel test."
delegate:self
cancelButtonTitle:@"cansel"
otherButtonTitles:@"ok", nil];
[alert show];
}
- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:
(NSInteger)buttonIndex{
if (buttonIndex == 1) {
_label.text = @"ok";
} else {
_label.text = @"cancel";
}
}
↑の(buttonIndex == 1)は何についての(どういった意味合いでの)記述なのでしょうか、実際に値をかえてみましたがbuttonを押した後のラベルの表示が入れ変わったりする。としかわかりません
でした。

よろしくお願いします。
0884名称未設定2013/10/12(土) 18:49:30.33ID:UyLpGPKC0
-alertView:clickedButtonAtIndex:はアラートのボタンのどれかがクリックされたときに呼ばれる
実際にどれがクリックされたかはbuttonIndexを見て判断する
0885名称未設定2013/10/12(土) 18:51:10.93ID:UyLpGPKC0
少し足りなかった
クリックされたボタンによって処理を変える必要があるからif文で分岐させてる
0886名称未設定2013/10/12(土) 19:28:18.51ID:FV0BY70D0
UITableViewでCoreDataを使用したアプリで、UISearchDisplayControllerを使用しています。
UISearchDisplayControllerがアクティブじゃない時(検索していないとき)にセルを削除すると、
問題なく削除されますが、
検索中に削除するとクラッシュしてしまいます。
さらに少しコードを直すと、セルのタイトルが、削除したものではないものになってしまいます。

現状では、Searchディスプレイコントローラがアクティブのときはスワイプなどでは削除させないようにして応急処置してあります。
これでも問題ないといえば問題ないのですが、
理想としては、標準純正アプリのメールのように、検索している最中に普通に削除したいです。

いろいろと海外質問サイトやGithubやサンプルコードなどを見たのですが、
UITableViewでCoreDataを使用したアプリで、UISearchDisplayControllerを使用したケースというのが見つかりません。

クラッシュしないで表示も正しくさせるにはどうすればいいのでしょうか?
0887名称未設定2013/10/12(土) 21:20:22.89ID:UyLpGPKC0
クラッシュの原因を調べて対策する
0888名称未設定2013/10/12(土) 21:28:07.26ID:bdrvgqiV0
>>886
エラーメッセージを書かないと誰も検討つかないぞ。
メッセージ出ないで落ちるのか?
0889名称未設定2013/10/12(土) 21:32:08.38ID:4piWmW750
ここでエスパーの出番
0890名称未設定2013/10/12(土) 22:34:44.91ID:G5292nPv0
どうせ NSRangeException だろ
0891名称未設定2013/10/13(日) 08:54:24.47ID:19rrgh000
>>886です。

>>888
こういうエラーメッセージが出ました。
Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2903.2/UITableView.m:1330
2013-10-13 08:50:01.794 プロジェクト名[16920:a0b] CoreData: error: Serious application error.
An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:.
Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (2)
must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted,
1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out). with userInfo (null)
0892名称未設定2013/10/13(日) 12:05:53.36ID:CtSXSeR+0
>>891
section:0 row:0 ←こいつを消そうとして失敗したのかな?
section:1 row:0
section:1 row:1
(section:2 row:0)
:
0893名称未設定2013/10/13(日) 12:21:25.88ID:0m/B40730
http://jacminik.wordpress.com/2010/07/28/study-coredata-19/
こういうのもあるね
0894名称未設定2013/10/13(日) 13:44:06.15ID:19rrgh000
>>892
はい、Searchディスプレイコントローラのテーブルビューでは0:0で、
実際のself.tableviewでは0:3です。
0895名称未設定2013/10/13(日) 14:24:12.05ID:19rrgh000
レスくれた方ありがとうございます。
原因は何なんですかね?
0896名称未設定2013/10/13(日) 21:51:51.63ID:qw+8wgIL0
日時を取得したいのですが、ユーザーが「日付と時刻」の「自動設定」をOFFにしてる場合、正確な時間を取得することはできますか?
0897名称未設定2013/10/13(日) 22:18:36.31ID:qUlZmDN20
自動設定をONにしてもらえwww
0898名称未設定2013/10/13(日) 22:19:38.70ID:H33UJEd2P
ためしてみればいいんじゃないかな。手動でiPhoneの日付かえて、[NSDate date]でとってみれば。
0899名称未設定2013/10/13(日) 22:57:53.97ID:Sk6PJp3P0
>>896
https://github.com/jbenet/ios-ntp
ネットワークが必須だけどね
0900名称未設定2013/10/13(日) 23:11:35.92ID:HOZq8pti0
撮った女の子を裸にする画像処理技術ってレベル高いでしょうか?
0901名称未設定2013/10/13(日) 23:24:41.06ID:uEleJhUn0
ハダカメラ Delux
0902名称未設定2013/10/14(月) 02:23:20.68ID:sUbeXN1q0
顔認識して、顔の下に適度な大きさの裸画像を貼り付けるくらいなら。
でもリジェクトされるけどな。
0903名称未設定2013/10/14(月) 02:52:37.51ID:T8hBFjpZ0
そういや、311後に雨後のタケノコのごとく湧いてた
放射能測定アプリ(というジョークアプリに決まってんじゃないすかーwww)って
詐欺有料アプリ群たちはどうなったんだろう。
0904名称未設定2013/10/14(月) 03:03:29.87ID:OtJjPAz60
あれって測定できないの??
0905名称未設定2013/10/14(月) 05:28:38.05ID:T8hBFjpZ0
ハードとセットの対応アプリならともかく
iPhone単体のどこに放射線計測するセンサーがついてんだよ…
0906名称未設定2013/10/14(月) 08:10:38.91ID:iyWtEuHv0
ハード付きはハードは有料、アプリは無料
というのはあったけど
ソフトだけの有料なやつもあったのかw
0907名称未設定2013/10/14(月) 10:07:00.10ID:JEMfijrZ0
>>895
sectionの数あってる?
データソース側がビュー側より1個少ないのでは?
0908名称未設定2013/10/14(月) 11:02:14.73ID:lTRUwpP4i
tes
0909名称未設定2013/10/14(月) 11:12:38.09ID:lTRUwpP4i
質問です。
アップルのサンプルプログラムやチュートリアルのプログラムのソースに
機能追加してアプリとして申請しても良いのでしょうか?
0910名称未設定2013/10/14(月) 11:18:28.60ID:zlGJshdr0
放射能はGPS使って福島からの距離により適当に算出するとか、
地域ごとの測定値テーブルから引っ張ってくるとかかな
0911名称未設定2013/10/14(月) 12:51:46.73ID:1M8D1KQI0
>>909
申請するのはいいと思うけど、機能しょぼかったらリジェクトされるよー
0912名称未設定2013/10/14(月) 13:16:50.88ID:911qVMw10
>>909
そんなアプリ山ほどあるけど、追加機能がしょぼかったら機能不足としてリジェクトされるよ。
ただ、ソース丸っと流用したものをリリースするのはどうかと思う。
0913名称未設定2013/10/14(月) 13:39:29.72ID:FnhqriqR0
コピペプログラマはプログラマと名乗ってはいけない
0914名称未設定2013/10/14(月) 13:44:53.56ID:iclvEvSW0
プロコピペマ
0915名称未設定2013/10/14(月) 14:09:22.67ID:+oHgi+XH0
1週間ほど前に雑談スレで聞いてみたけど結局よく分かんなかったので質問させてください
・iOS7対応端末のうち非Retinaは一部のiPadのみ
・iOS7のiPadにおいてiPhoneアプリは960x640のRetinaモードで動く
以上から考えると、iPhone専用アプリをiOS7のみのサポートにした場合、
非Retina用のリソースや処理は省略できるという理解でいいんでしょうか?
0916名称未設定2013/10/14(月) 14:24:28.51ID:EuJSw4fc0
>>915
>・iOS7対応端末のうち非Retinaは一部のiPadのみ
iPad 2とiPad mini。とくに、miniは「一部」とは言えないよなぁ。
>・iOS7のiPadにおいてiPhoneアプリは960x640のRetinaモードで動く
iPadでiPhoneアプリ動かしたことないの?
768x1025の画面中央に320x480で表示されて、x2ボタンを押すと640x960になるよ。
>以上から考えると、iPhone専用アプリをiOS7のみのサポートにした場合、
>非Retina用のリソースや処理は省略できるという理解でいいんでしょうか?
できないと思うけど…。
0917名称未設定2013/10/14(月) 14:45:21.07ID:PIUrAoL20
>>907
なるほど!セクション数ですか。
セクション数はたしかフェッチリザルトコントローラーから取得するようなコードでした。
実際は常に0にしたいんです。

ありがとうございます、セクション数を見直してみます。

ちょいコード訂正してからまた質問すると思います。
よろしくお願いします。
0918名称未設定2013/10/14(月) 14:46:04.91ID:+oHgi+XH0
>>916
iOS7 beta3以降の非Retina iPadでは2倍モードが強制になったという話です
ググれば紹介記事は色々出てくるけど例えば
ttp://blog.livedoor.jp/applebrothers/archives/52338915.html
0919名称未設定2013/10/14(月) 14:47:57.78ID:f1Ht6fTpP
>>915
iOS7以上だと、iPhone4/iPod touch 5G以降で全てRetinaだけど、
Xcodeのvalidatorがサブミットの時にはじく気がする。
やってみてくださいの世界だな。
0920名称未設定2013/10/14(月) 15:01:28.76ID:RtsYzIVd0
俺の手元のminiでは640x960強制みたい
0921名称未設定2013/10/14(月) 15:11:35.46ID:xrrnANW/0
インスタンスのポインタは、
グローバル変数でもってはいけないんだろうけど、
constでもまずいのですか?

const NSString* str[] = {
@"あああ",
@"いいい",
};

のような配列を良く使うのですが、クラッシュの原因になりますかね?
自分の端末ではこれにアクセスして落ちたことは一度も無いですが。
0922名称未設定2013/10/14(月) 15:20:55.96ID:LnT4cljT0
グローバル変数もconstもそんな必要なケースってあるのかな…
作ってきたアプリがしょぼいのもあるけど、他の人のコード見たことないってのもあるけど。
0923名称未設定2013/10/14(月) 15:36:03.23ID:xrrnANW/0
NSArray *str = [NSArray arrayWithObjects:
@"あああ",
@"いいい",
…
};

こうすべきなのかね。
でも文字列が何百個もあってもこうしなきゃならんのって…。
0924名称未設定2013/10/14(月) 15:36:52.44ID:nExXT5/q0
>>921
んなことないよ。んなことないからんなことないよ

>>922
グローバルなキー値とか。OSのNSなんちゃらのような
0925名称未設定2013/10/14(月) 15:42:55.68ID:nExXT5/q0
>>923
何をしたいのかわからんけど、文字列リテラルをってのなら
NSString *const str[] = {
@"あああ",
@"いいい",
};
でいいと思うけど
0926名称未設定2013/10/14(月) 15:45:14.95ID:0nZPcXy60
>>924
あー。なるほ。
確かに要るね。

>>923
何がしたいのかによるけど、デフォルト値で良いなら、plistに必要な文字のリスト用意しておけば楽かなぁ。
NSArray *list = [NSArray arrayWithContentsOfFile:budleFilePath];
とか。
NSMutableArrayなら可変になるから文字の差し替えもできる。

budleFilePathはNSString型だけど、NSBundleで調べてね
0927名称未設定2013/10/14(月) 16:02:57.28ID:bGIEVaLl0
>>923
stringFromEnum[] とかよくやるよ。
ヘッダに書いてunusedが出るならexternして実装ファイルに書く。
0928名称未設定2013/10/14(月) 22:34:36.85ID:IBFXD6Sn0
Xcode5のストーリーボードで、TableViewのStaticなCellを使ってるんですが、
セクションのヘッダに設定した英文が全部、大文字で表示されてしまいます。
大文字小文字混じりにするにはどうしたらよいのでしょうか?
宜しくお願いします。
0929名称未設定2013/10/14(月) 22:49:41.83ID:uF9aKoN50
>>928
ちよっと試してみたけど、ちゃんと大文字は大文字、小文字は小文字で出るよ。
どうやったら全部大文字になるんだろ?何をどうやったの?
0930名称未設定2013/10/14(月) 22:56:18.25ID:IBFXD6Sn0
>>929
TableのスタイルをPlainじゃなくて、Groupedにしてみてください。
大文字にならないですか?
0931名称未設定2013/10/14(月) 22:56:27.81ID:zPGbA9hf0
>>928
このスライドの49枚目
www.slideshare.net/techblogyahoo/2-ios7-workshopmigration
0932名称未設定2013/10/14(月) 23:07:17.31ID:IBFXD6Sn0
>>931
ぬぅ、ありがとございます
0933名称未設定2013/10/14(月) 23:08:20.98ID:IBFXD6Sn0
しかし、iOS7は理不尽な仕様変更が多すぎますね
0934名称未設定2013/10/14(月) 23:15:32.08ID:fjVLY2B+0
>>931
そんな仕様変更あったんか。日本語環境だと気づきにくいな。
0935名称未設定2013/10/15(火) 03:33:10.10ID:vQo6893f0
ラベルの文字を画像にしたいのですが、やり方がわかりません。どなたか教えていただけますか?
0936名称未設定2013/10/15(火) 03:56:15.82ID:EG9pEXfE0
custom
0937名称未設定2013/10/15(火) 07:56:14.29ID:CO8w4iPN0
>>935
ん?背景じゃなくて文字を?絵文字ってこと?
0938名称未設定2013/10/15(火) 12:59:24.70ID:TMyEY/gV0
>>935
CGSize textSize = [_label.text sizeWithFont:_label.font];
UIGraphicsBeginImageContextWithOptions(_label.bounds.size, NO, 0);
[_label.backgroundColor setFill];
CGContextFillRect(UIGraphicsGetCurrentContext(), _label.bounds);
[_label.textColor setFill];
[_label.text drawAtPoint:CGPointMake(0, (_label.bounds.size.height - textSize.height) / 2) withFont:_label.font];
UIImage *goalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
0939名称未設定2013/10/15(火) 13:56:30.28ID:kHpyJXy/0
>>935
その必要性がわからん。ラベルの代わりに画像置くのじゃ駄目なのか。
0940名称未設定2013/10/15(火) 14:16:40.99ID:mapPtPO80
>>939
エスパーすると、カメラアプリなどで入力した文字と既存の写真・画像を合成してjpgやpng保存…っていうことをしたいんじゃないだろうか。
0941名称未設定2013/10/15(火) 14:34:27.42ID:kHpyJXy/0
>>940
意味がわかった。
0942名称未設定2013/10/15(火) 16:00:59.14ID:M7u08eel0
>>938
ありがとうございます。やってみます。
>>940
おっしゃる通りです。
0943名称未設定2013/10/15(火) 16:47:02.70ID:V91IfjvI0
ナビゲーションバーに例えば
[self.navigationItem setRightBarButtonItems:@[downButton,upButton]];
とした場合に、iOS7だとボタンの間隔が広すぎるので狭くしたいのですが
どのような方法がありますでしょうか?
0944名称未設定2013/10/15(火) 18:46:53.33ID:P1d8kq7e0
>>943
UISegmentedControlのmomentary=YESにしたやつを置く。
0945名称未設定2013/10/15(火) 19:02:39.35ID:V91IfjvI0
>>944
お手本にしているメールアプリに似せたいと思っていて
iOS6までは UISegmentedControl でやってたのですが、
iOS7だと枠がどうしても消せなくて断念した経緯がありまして…。
0946名称未設定2013/10/15(火) 22:12:31.20ID:fVkclvG90
>>945
UIViewにUIButtonを二つ並べたものをUIBarButtonItemのinitWithCustomView:するとか?
UIButtonTypeSystemにすれば画像ボタンも青くなるっぽいし。
0947名称未設定2013/10/16(水) 01:34:53.63ID:SXEuB76i0
delegateでハマる人はcontextを理解できない人
ま、なかなか難しいよdelegateもblockも
0948名称未設定2013/10/16(水) 01:46:46.27ID:C4iL9g5q0
アプリケーションの開発を始めたばかりの初心者向け「質問」スレで何を言っているんだ
0949名称未設定2013/10/16(水) 02:17:38.11ID:2N0lgKY70
CoreDataを学んでいます。ひとつ質問です。

A、Bの2つの画面を用意し
Aは登録フォーム、Bは一覧画面を表示させようとしています。
AとBの画面はタブバーによって切り替えています。

CoreDataそのものは実装できたのですが、
Aで登録したあとBの一覧画面に切り替えても
すぐには反映されません。
一度アプリを完全に終了させて再度起動させると
ちゃんとB画面で登録した情報が表示されます。

ナビゲーションによる画面遷移のような仕組みだと
すぐに一覧画面に登録情報が反映されるのですが
どうもタブバーによる画面切り替えの場合はうまくいきません。

よろしくお願いいたします。
0950名称未設定2013/10/16(水) 02:49:27.72ID:2N0lgKY70
>>949
です。すみません質問しておいてたった今解決しました!
全てAppDelegateクラスで実装しておいて
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
で取り出していくのですね

以下のサンプルコードから解決しました。
ttp://www.codigator.com/tutorials/ios-core-data-tutorial-with-example/
(画面一番下の方のリンクの Download the complete source code here です)
0951名称未設定2013/10/16(水) 03:00:41.90ID:SXEuB76i0
Bの-viewWillAppearでreloadDataなんじゃないの?
解決したなら、まっいいか。
0952名称未設定2013/10/16(水) 11:32:55.89ID:QesErf1sP
>>950
多分contextをAppDegateで共有するようにしたんだと思うけど、もう少し質問して別のアプローチを学んだ方がいいと思うぞ。
解決したなら、いいんだけどさ。
0953名称未設定2013/10/16(水) 14:21:55.06ID:dfTj85nq0
>>951
>>952
ありがとうございます。NSUserDefaultsでの保存もそうなのですが
親子構造を持たない画面遷移の場合、「-viewWillAppearでreloadData」だけによる解決以前の
もっと全体の問題のようですね…

自分はウェブプログラミングからこの世界に入りまして
ウェブでDBを扱う時は、各画面その都度DBにつないでデータを取り出し表示させればいいので
なかなかiOSの考え方を理解するのに戸惑っています。
0954名称未設定2013/10/16(水) 22:33:26.44ID:W1V/N/R40
UICollectionView の reloadData って非同期で呼ばれてるっぽいけど
reloadData の完了を待って処理したい場合どうすればいいですか?

TableView の場合だとこんな感じでいけるっぽいが CollectionView だとうまくいかなかった。
http://qiita.com/corocorococoro/items/1c80681cd7e1fddc3ba3
レス数が950を超えています。1000を超えると書き込みができなくなります。