2013/07/26

続・ほぼ初めてのiOS開発

後藤です。

みんなサボりがちなものの 私だけはちゃんと毎週続けていこうと思っていましたが、とうとう先週サボってしまいました。(ブログの投稿を)
エラーが出るたびにネタとしてちゃんとためていたので、今週はちゃんと更新します。

書き忘れていましたがXcodeのバージョンは4.6.3です。


■ TableViewがあるのにないと言われる

2013-07-05 18:12:02.175 SmartReort[3602:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "KuI-1g-SwH-view-lpF-QE-BSf" nib but didn't get a UITableView.'

遷移先のViewにTableViewが存在しないというエラーのようです。でもさすがに私が初心者とはいえ、Storyboadで遷移先の画面にUITableViewを置いていないような心当たりがあったらすぐに気付きます。置いていたのに出たのです。
こちらについては、調べていて無事原因がわかりました。

ふつうUITableViewが配置されているViewはTableViewとOutletで繋がっているようなのですが、これがなぜか切れており、それでViewがTableViewを認識してくれなかったみたいです。

ViewとTableViewを後から繋げる方法についてはわからず、まだ設計初期だったこともあり TableViewControllerを新しく配置し、画面を作りなおすことで解決しました。
もう新しく画面を作りなおすのは…という場合も、遷移後画面の実装ファイルにloadViewメソッドを追加し、その中でself.viewにTableViewをコードで追加するようなことでもできるようです。

参考
ios - nib but didn't get a UITableView - Stack Overflow
TableViewを使おうとしたらエラーがでた。 - 毒林檎のBlog


■ UITableViewCellのCustomCellに貼りつけたUITextViewをクリックするとセルがタップできない

ラベルの上はクリックしてもちゃんとセルをタップしたことになるのに、TextViewはならない。TextViewの範囲以外をタップすればきちんとセルをタップできる。
そもそもViewというものをしっかり理解しきれていないところがまだありますが、とにかくUITextViewやUIViewなどはViewの上に覆いかぶさったようになってしまって タップするとそちらを認識し、その下にあるViewは認識できないようです。

解決策は、UITextViewをタップで認識させないようにすること、だけどそこにたどり着くまでが…。そもそもViewがどうのというよりCellにTextViewなんかを貼るからいけないんだとばかり思っていたので、そこを今井さんに指摘して頂くまで気付きませんでした。

あらかじめCellのTextViewはストーリーボードのAttributes inspectorでTagの番号を設定しておいて、cellForRowAtIndexPath:メソッドあたりで
     UITextView *textView = (UITextView *)[cell viewWithTag:1];
     [textView setUserInteractionEnabled:NO];
とすることでちゃんとTextViewは認識しないようにできました。

こんなメソッドUITextViewクラスの公式リファレンスに書いてない…と思ったけれど、UIViewのサブクラスだからってことですよね。Javaのリファレンスが確か継承したものも全部書いてあったので、その感覚でいました。これからはちゃんとスーパークラスも見るようにします。。

参考
UIViewで後ろにあるViewを認識させる方法 - hachinobuのメモ
もうひとつsetUserInteractionEnabledの存在を知ることになったきっかけのサイトがあった気がするけど、どうやってたどり着いたのか忘れてしまいました。


■ 'release' is unavailable: not available in automatic reference counting mode
■ ARC forbids explicit message とXcodeに怒られた


カメラを閉じるところで[picker release];を書いたら赤いのが出ました。この2つはセットで出るもようです。
理由は、iOS5からはARCがメモリ管理を適切に行ってくれるので、releaseは書かなくてもいい(というか書いてはいけない)とのこと。カメラに限らず、ARCが関係しているところをreleaseしようとすると怒られるみたいです。どこだったか忘れてしまいましたが他でも同じエラーが出たことがあります。

Appleのカメラ操作のプログラミングのドキュメントは情報が古いようで(13/07/19現在)ドキュメントの通りに書いてるとそのように出てしまいます。[picker release];を消すことで解消しました。

参考
ARC forbids explicit message send of ‘autorelease’ | iPhone&Android端末向けのアプリ開発忘備録
‘release’ is unavailable: not available in automatic reference counting modeエラー | Koji's Blog


今回はそのような感じでした。内容が前のものと似ているので件名を前回の続きという風にしたものの、もう1ヶ月くらい経ちますし、iOS開発も大分慣れてきました。勝手が分かってくるとやっぱりプログラミングは面白いです。
弊社ではスマホアプリ等とサーバ側で通信を行うようなサービスを開発する際にThriftを利用していますが、それも最近Bootcampで習い、使いこなせて…いるかどうかはまだ分かりませんがJavaとCocoaでのデータのやり取りをできるようになりました。これからも色々と学んでいきたいです。

以上、後藤でした。



.

1 件のコメント :

  1. Nice post! Thanks for sharing!
    Võng tự đưa hay võng điện cho em bé hay đưa võng tự động giúp bé ngủ ngon mà may ru vong tu dong không tốn sức ru võng. Võng tự động hay may dua vong tu dong gia re chắc chắn, gọn gàng, dễ tháo xếp, dễ di chuyển và may dua vong tu dong dễ dàng bảo quản.
    Chia sẻ các bạn lắc vòng có bị vô sinh không hay cách trị gàu hiệu quả nhất hay giải mã giấc mơ thấy người chết hay cách chống nắng bằng trà xanh hay Collagen trị mụn được không hay chữa mất ngủ bằng gừng đơn giản, bí quyết làm trắng da bằng cà phê và dầu dừa hay giảm cân nhanh bằng gạo lứt hq hay mẹo giúp tăng cường trí nhớ hiệu quả, những thực phẩm giúp cải thiện trí nhớ hiệu quả, hay bệnh viêm khớp không nên ăn gì hay mẹo giúp giảm độ cận thị cho bạn, bí quyết chống nắng với cà chua cực hiệu quả, cách giúp bé ngủ ngon giấcthực phẩm giúp bé ngủ ngon mẹ nên biết, chia sẻ cách làm trắng da toàn thân bằng thực phẩm, những món ăn chữa bệnh mất ngủ hiệu quả.

    Những thực phẩm giúp đẹp da tại http://nhungthucphamgiupda.blogspot.com/
    Thực phẩm giúp bạn trẻ đẹp tại http://thucphamgiuptre.blogspot.com/
    Thực phẩm làm tăng tại http://thucphamlamtang.blogspot.com/
    Những thực phẩm giúp làm giảm tại http://thucphamlamgiam.blogspot.com/
    Những thực phẩm tốt cho tại http://thucphamtotcho.blogspot.com/
    Những thực phẩm tốt cho da tại http://thucphamtotchoda.blogspot.com/

    返信削除