Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
2012年02月02日12:42 カスタマイズしたUITableViewCellから自前のイベントを受け取る カテゴリ開発cocoa melodybox Comment(0)Trackback(0) 今回はカスタマイズしたUITableViewCell(サンプルとしてUISwitchを加えたもの)をUITableViewに追加した場合の、セル上にあるスイッチが切り替わった事をTableView側で感知する方法をご紹介しようと思います。 まずこのようなカスタマイズUITableViewCellを作ります。カスタマイズしたUITableViewクラスの名称は、「SwitchCell」とします。SwitchCellクラスのヘッダファイルは次のようになります。 @protocol SwitchCellDelegate // スイッチの切換えを通知する -(void) tableView:(UITa
コントローラに定義したメソッドをタッチで呼び出したくて奮闘した。 デリゲートって、なんか小難しい技なのかと思ってたけど、単にコントローラとかのインスタンスのポインタをビューのインスタンス変数に入れておくってだけっぽい。 正確には違うのかもしれないけど、多分そんな感じ。 先週末辺りから会社でiPhoneアプリ作ってる。 面白い。 ソース 登場人物は、2つ。 ・Controller => UIViewControllerを継承したRootViewController。 ・View => UIViewを継承したRootView。 RootView.delegateにRootViewControllerを代入。 RootViewでタッチイベントを受け取る。 RootViewからRootView.delegateに代入されてるRootViewControllerのメソッドを呼び出す。 RootVie
データ取得や重い処理を行っている間、表示しなければならないぐるぐる回っている例のあれです。 表示中は操作させないようにしたり、できればかっこいいやつがよかったりと実は意外と面倒なんですよね。 でも無駄にソース書きたくないし、でも表示しないわけにはいかないし、手軽に使えてなんかかっこいいやつないかな、...あった!! ってなわけで、たった数行でかっこいいローディングを表示するSVProgressHUDを紹介します。はまりどころもあるので、最後まで読んでいってください。 SVProgressHUDの特徴 SVProgressHUDの特徴として、 導入・使い方が簡単 かゆいところに手が届く ARC対応 MITライセンス があげられます。とにもかくにも使ってみましょう。 早速使ってみよう 開発環境は以下の通り。 Xcode 4.5.1 iOS SDK 6.0 サンプルプロジェクトの作成 XCode
前提「iPhoneアプリを作りたいなら」ではない。「売れるアプリを作る企画力」や「イケてるUIを作るデザイン力」なしに、「アプリ開発に必要なObjective-Cの技術力」だけあっても意味ない。それでもいい人向け。前提2巷のブクマされている「オススメ本集」は自身の著書や身内の本を薦めるためのポジショントーク的な選書がよくある。溢れかえる「分かりやすさ」を訴える本は必要はない。買うとしても1冊で十分。 分かりやすい本じゃないと身につかないなら、結局作れるものは「その程度」のものに留まる。そして「その程度」を作れる人は既にうじゃうじゃいるからApple税を無駄にするだけ。公式ドキュメント日本語ドキュメント - Apple Developer 日本語化された公式ドキュメント。全てを読むのは難しいが、「Objective-C プログラミング言語」「Objective-Cによるプログラミング」を読め
スマホに最適化されたWebサイトでよく見かけるスクロールについてくるあのバナーを、あえてネイティブで実装してみました。あくまで技術的なネタであってわざわざこういった実装をする目的はアレなので実際にAppStoreの審査でどうなるかは不明です。 方法としては、UIWebView(UIScrollView)とバナーのViewはそれぞれ独立させて配置し、スクロールをトラッキングするUIScrollViewDelegate#scrollViewDidScroll:(UIScrollView) で、scrollViewのoffsetを利用し、バナーのViewのoffsetを調整するようにします。 バナーを画面スクロールに追従させる UIWebViewは全画面にADBannerViewは下部に配置します。 UIWebViewのscrollViewのdelegateを設定しハンドリングし、scrollV
FlashとActionScriptをこよなく愛する私が、つまりはFlashすきすきおっさんがXCodeとObjective-Cについて入門しようとしたときにどうしてもつまずいた点を挙げていきたいと思います。実際にはFlashぜんぜん関係ない記事になっていますが。 FlashやActionScriptと比べてあれがないこれがあるとかいうのはナンセンスなのですが、自分が今学習中の開発スタイルでXCodeだとどうやって開発していったらいいのか、同じようにできるところは同じように、同じようにはできないところは違う方法を探りながらやっています。 とにかくXCodeとObj-Cについて初心者以前であり独学ですので盛大に間違えている可能性があります。 さらにどっちかというと人に説明すると言うよりは 自分がつまずいたところをあとで見直すように、完全に自分向けの個人的な覚え書きのつもりで書いています。 そ
先日、「iOS6でAndroidのインテントっぽいものができたって聞いたんですけど、ほんとですか?」と聞かれました。 うーん、聞きたいことはわかるんだけど、ちょっと違うんですよね。 ……というわけで、Xcodeでの設定方法もだいぶ前と変わったし、iOSの現時点でのアプリ間ファイル共有についてまとめてみました。 iOS6で大きく変化したところは…… まず、iOS6で大きく変わったのは次の二つです。 UIDocumentInteractionControllerを使った共有が、機能も見た目も大幅に進化したこと UIActivityViewControllerを使った共有ができるようになったこと それぞれ変更内容がいろいろあるので、三つにわけて書いてみました。 その1:OpenURLを使ったデータ共有 その2:UIDocumentInteractionControllerを使ったデータ共有 その
ついにiOS 6がリリースされましたね。iOS 6では、また数多くの機能が追加されました。ユーザー目線での新機能もさることながら、個人的には開発者にとって嬉しい新機能 Collection View に注目しています。 Collection Viewとは Collection Viewとは、一言で言えば縦横方向にセルを並べることができるTable Viewのようなものです。UICollectionViewControllerを用いて画面を作成し、セルの中身は、UITableViewControllerと同様にDataSourceを使って指定します。 各セルのサイズは一定である必要はなく、また、セル間の最低間隔を指定しておくことで、レイアウトが自動で計算されキレイに配置されます。 かなり少ないコード量で、以下のスクリーンショットのようなUIを実現することが可能です。もちろん、デバイスの向きが
12/07/06 追記 delegateのコードを修正しました。 delegateはretainでなくて、assignにした方が良いみたいです。 その場合は、deallocの中のreleaseも必要なくなります。 参考 >> Why are Objective-C delegates usually given the property assign instead of retain? AがBを作り、BのdelegateにAをセットする。 BがretainでAをもつことにより、AとBが互いにretainで参照を持つことになります。 そうなってしまうと、BをreleaseしようとしてもAをretainしているためにreleaseできずにメモリリークするということのようです。 —————- こんにちは。きんくまです。 今回から何回かに分けて、Objective-C でのイベント伝達の扱い方に
このページは「iPhoneプログラミング入門」(工学社刊、ISBN 978-4-7775-1541-7)を読んで、もっと先へ進んでみたいと思った人への説明です。 次へ-> <-「ビュー・コントローラ間でのデータの受け渡し、その1」 「次の一歩」一覧へ ビュー・コントローラ間でのデータの受け渡し、その2「元のページへデータを返す」 ---(1)アプリケーションの概要 --- 「メッセージ表示」->「入力」->「それを表示」 モーダルビューでメッセージを入力 モーダルビューとは、ある画面の使用中に、設定等のために出す別の画面です。ダイアログボックスのような小さいウィンドウを想像しますが、iPhoneのようなもともとが小さい画面では、特に大小にこだわらず使われます。 モーダルビューは、普通のビューコントローラを用います。違いは、ナビゲーションコントローラに「このビューコントローラをモーダルビュー
前回は、main関数からビューコントローラを使ってビューを作るまでのコードを説明しました。今回からはサンプルアプリケーションの作成を通して、iOSアプリケーション開発の様々な技法を学んでいきましょう。 まずは作成するサンプルアプリケーションのデザインを考えます。 作成するアプリケーションの概要 プロフェッショナルになるためには1万時間の訓練が必要であるという説があります。プロレベルまでいかなくても、一芸に秀でるためにはある程度まとまった時間が必要になります。この連載ではそんな練習を継続するモチベーションを助けるツールを開発します。機能一覧としては以下のような内容を想定しています。 継続したい目標を登録する 目標の一覧画面 目標の経過時間登録画面 日時設定によるリマインダ機能 達成度をFacebookでシェアする 画面をデザインする それでは個々の画面を簡単にデザインしてみます。 目標登録画
iPhoneアプリの画面で、計算機アプリのようにボタンや画面の背景色がグラデーションになっているものをよく見かけますが、これをObjective-Cを使ってXCodeで実現する方法をご紹介します。 UIViewに適用してみる ここではUIViewのサブクラスであるUIViewController (=self)に適用させてみますが、UIButton等のボタンもUIViewのサブクラスなので同じように適用できます。 QuartzCoreフレームワークを導入 グラデーションを実現するにはまず、作成しているプロジェクトファイルに「QuartzCoreフレームワーク」を導入します。 導入方法は簡単です。 上の図のようにXCodeでプロジェクトのTARGETSに表示されているアプリアイコンを選択し、「Build Phases」タブを選んで「Link Binary with Libraries」の行の
iOSアプリ開発のデバッグ中に発生したエラー。 【エラーログ】 2011-12-24 02:56:27.607 MutableArrayCopyTest[9503:207] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x6a296c0 【現象】 NSMutableArrayのオブジェクトをcopyしたオブジェクトに "addObject:"、"replaceObjectAtIndex:withObject"、"removeObject:" 等の配列内要素の構成を変更する処理をコールすると強制終了する。 【原因】 NSMutableArray のAというオブジェクトを copy したBという NSMutableArray のオブジェクトは実は Mutable ではなく Immutable なオブジェクトに
UIView の位置やサイズを知るプロパティに frame と bounds があります。この frame とbounds の違いを簡単にまとめて見ました。 簡単にまとめると以下のようになります。 frame はスーパービューから見た座標 bounds はローカルのビューから見た座標 実際に親子関係のビューを作成して確認してみます。 ViewB は ViewA の中に配置されています。 [ViewA addSubView:ViewB] のような関係です。 この時の frame と bounds はそれぞれ以下のようになります。 ViewA.frame origin: 0,0 size: 550×400 ViewA.bouns origin: 0,0 size: 550×400 ViewB.frame origin: 200,100 size: 200×250 ViewB.bounds or
「UIWebViewを使って簡易ブラウザを作る!」的なチュートリアルは、アドレスバーを付けることはあまり書かれていないようで、常時表示されるアドレスバー付きチュートリアルとかもあるけど、Safariみたいに隠れるやつがいい、ってことで作ってみた。 とりあえず便宜上、UIViewのサブクラスで、BrowserViewなるものを作る。 まずはヘッダーファイル。 #import <UIKit/UIKit.h> @interface BrowserView : UIView <UIWebViewDelegate, UIScrollViewDelegate> { UINavigationBar *addressBar_; UIWebView *webView_; } @property (nonatomic, readonly) UINavigationBar *addressBar; @prope
iPhoneアプリでテキスト入力をするとき、出てきたキーボードの陰に文字入力エリアが隠れちゃって入力している文字が見えないことがありますよね。 そんなときには文字入力エリアを見える位置まで動かして入力しやすくすると、ぐっと使いやすくなります。 (以下のコードは、目的のViewのUIViewControllerクラスに実装します。) Viewにスクロールビューをおく まず、UIScrollViewを作ります。 とはいっても、この処理をするときに UIScrollView が絶対に必要というわけではないんです。 部品一つ一つの位置を動かしていってもいいんですが、UITextFieldが画面にいくつもあるときには、UIScrollViewにのせて全部まとめて動かしちゃうほうが楽ですよね。 なので、ここでは View の上にUIScrollViewをおいて、その上にUITextFieldを二つ配置
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く