「本当に○○を削除しますが、よろしいでしょうか?」や「このURLをお気に入りに追加しますか?」など、ユーザーとの対話にアラートを使用するアプリは結構あります。 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"タイトル" message:@"本文" delegate:nil cancelButtonTitle:@"キャンセル" otherButtonTitles:@"ボタン1",nil]; [alert show]; [alert release]; 上記のコードを実行すると、このような表示になります。 ボタンを追加するのはUX的に考えてあまりよろしくないですが、2つくらいなら許されると思います。ボタンをもう一つ追加してみましょう。サンプルコードをご覧下さい。 対話の選択肢としてのボタンの数を増やしたい場合、otherBut
こんにちは、iPhone大好き橋本です。 今日はiPhoneアプリの作成に関する「こんなときどうするの??」という疑問にお答えするべく、小技をいくつか紹介したいと思います。 1. 文字サイズに合わせてUILabelのサイズを変えたい。 UILabelを作成するときに、Labelに表示する文字によってUILabelのサイズを変えたいということ無いですか??ただ、UILabelを作成するときはframeのサイズを指定しなきゃいけませんよね。 こんなとき、どうするの?? そんなときには、UILabelにこんなカテゴリを書いちゃいましょ。 @interface UILabel (resize) - (void) resizeWithPoint: (CGPoint)point; - (id) initWithText:(NSString *)text andFont:(UIFont *)font;
iPhone でユーザー通知や警告などに使われる UIAlertView について代表的なカスタマイズ方法をまとめてみる。 2013/10/28 追記 この記事で紹介している UIAlertView - addSubView を利用したカスタマイズは、iOS 7 以降では利用できません そのため代替案を検討する記事を書きました。 iOS 7 以降の UIAlertView カスタマイズ代替について考える セレクターをボタン毎に設定する UIAlertView の内容やボタンが複数あるときに標準の UIAlertViewDelegate - clickedButtonAtIndex でハンドリングするのは非常に面倒だ。内容を判定するには UIAlertView の tag プロパティを利用するかオーナーとなるクラス側に状態を持つことになる。押されたボタンについてはインデックスしか情報がないた
UIAlertViewのカスタマイズにつまずいたのでメモ。 通常UIAlertViewを表示したい場合、以下のようなコードを作成する...と思う。 UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"タイトル" message:@"メッセージ" delegate:self cancelButtonTitle:@"キャンセル" otherButtonTitles:@"決定", nil] autorelease]; [alert show]; サイズを変更したかったので、showメソッドの前でframeを変更する。 が、考慮されない模様。 UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"タイトル" message:@"メッセージ" delegate:self
アプリも完成間近にさしかかり、深刻なエラーはないものの、警告が多かったのでそれをつぶしにかかる。 あれこれ調べているうちに「addTextFieldWithValue:label:」というメソッドが非公開APIという位置づけにある事を知った。 ということは、リジェクトを食らうってこと? TextFieldからの値を取得したり、レイアウトを決めるのには元々のUIAlertViewをカスタマイズしたクラスを作れる必要があるんだろうなと思っていたところに、ちょうどいいものを発見! 「TextAlertView.m」 http://discussions.apple.com/message.jspa?messageID=8445879#8445879 すでに誰かが作ってくれているならこれを参考に作っちゃいましょう♪ 中を見てみると、 (id)initWithTitle:(NSString *)ti
CoreDataにあるエントリーがあって titleというatributeで日本語タイトルを保持している。このタイトルの最初の1文字をSection Titleにするために、titleInitialというatributeを作ってTransientにし、その最初の1文字はインプリで対応した。 以下が参考になった。 How to use the first character as a section name – ComAnswer.com @implementation NSManagedObject (…) – (NSString *) titleInitial { [self willAccessValueForKey:@”titleInitial”]; NSString *aString = [[self valueForKey:@”title”] uppercaseString];
UITableViewの使い方めも その2。 iOSでテーブルを表示するUI、UITableViewクラスについてもう少し詳しい使い方。 テーブルビューの表示のカスタマイズ UITableViewのカスタマイズ 基本的にInterface Builderで設定できるため、xibのほうで設定するのがいいと思います。 Interface Builderを利用しないときは、(void)viewDidLoadなどの、viewのアイテムを初期化する時に設定するようにします。また、UITableViewのメソッドで設定するパラメータは、そのテーブルのセルすべてに適用されます。 背景色を設定する [myTableView setBackgroundColor:[UIColor greenColor]]; 背景画像を設定する // 背景画像 UIColor* col = [[UIColor alloc]
2011-06-09 追記 UITableViewCell の Identifier 設定を忘れてたので追記しました。 UINib を使うと簡単に Nib で定義した UITableViewCell が使える。 今回のサンプル: 次に CustomCell クラスの実装(*.m/*.h)を作成する。こんな感じ。 CustomCell.h @interface CustomCell : UITableViewCell { } @property (nonatomic, retain) IBOutlet UILabel* nameLabel; @property (nonatomic, retain) IBOutlet UILabel* dateLabel; @property (nonatomic, retain) IBOutlet UILabel* descLabel; @property
UIImageでURLの画像データを取得し、UIImageViewのimageプロパティへ格納。 あとは表示したいUIViewにaddSubviewで貼り付けるだけです。 //Web上の画像をUIImageViewで表示する NSURL *tmp_url = [NSURL URLWithString:tmp_str]; NSData *tmp_data = [NSData dataWithContentsOfURL:tmp_url]; UIImage *tmp_image = [UIImage imageWithData:tmp_data]; //座標(0,0)に画像サイズ大のUIImageViewを作成 CGRect tmp_rect = CGRectMake(0,0,tmp_image.size.width,tmp_image.size.height); UIImageView *im
現在、Music 内にあるアルバムタイトル・アーティスト名・アートワークを表示するアプリを作成して遊んでいます。 で、標準アプリ Music のように、左に画像を設置しているのですが、なんだか横幅がばらばらに表示されてしまいます。 この横幅を統一するために色々と調べましたのでメモします。 方針 最初は、- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 内で、画像の横幅を設定していたのですが、思ったように動作しませんでした。 UITableViewCell をサブクラス化して、- (void) layoutSubviews クラス内に記述するとうまく動作するようです。 サブクラスの作成 「File」→「New」→「File…」→「iOS」
2011年07月13日12:44 カテゴリiPhone豪(たけし) [iPhoneアプリ]UITableViewのスクロールを滑らかにする こんにちは、豪(たけし)です。 UITableViewでの縦スクロールが妙に重いケース、良くありますね。 今回はHotel.jpのiPhoneアプリで縦スクロールをスムーズに高速に動かすために 行っていることをご紹介します。 Hotel.jpアプリのホテルの検索結果画面では、1つのセルの中にテキストラベルが 15個+画像2つ、しかもテキストラベル14個は画面左のタブを押すと横移動も するといういかにも重そうなインターフェースなのですが、iPhone4であれば スムーズに縦スクロールします。 検索結果画面 動画(30~40秒目が検索結果画面です) ここ苦労したんです・・・。実装方法をざっとお話します。 最初は楽をしてやろうとUITableViewCell
iPhone でのモーダルビューの表示、非表示、値の受け渡し方法です。モーダルビューとは、下からニョキッと出てくるタイプの一時的なビューです。何か情報を入力させたりするのに使用します。 大事な点は、 モーダルビューの表示、非表示は両方共同じクラスでやること 値の受け渡しはデリゲートで行うこと ということです。 サンプルでたまに見かけるのは、表示を親ビューでやり、非表示はモーダルビューの中でやっている方法です。この方法でもかまいませんが、より汎用的にするためにはデリゲートを使用して、モーダルビューを表示したビューコントローラで非表示も行うべきです。また、モーダルビューから値を渡すのもデリゲートを使用して行うべきです。 モーダルビューの例としては、UIImagePickerViewController があげられます。この UIImagePickerViewController からの値の受け
「UIViewControllerをプログラム上で作る」で作成したカスタムUIViewControllerのインスタンスを呼び出しビューコントローラ側、モーダルビューコントローラ側の2つ作成し利用する。 この事からモーダルビューを扱うUIViewControllerが特別なUIViewControllerである必要がないことを理解する。 まず、モーダルビュー終了用にボタンにアクションを割り当てる。 モーダルビューを閉じるにはモーダルビューを呼び出したUIViewControllerにdismissModalViewController:Animated:メッセージを送ればよい。 呼び出したUIViewControllerはモーダルビューを管理するUIViewControllerのparentViewControllerプロパティに設定されている。 /* ボタンが押され、かつ、ボタン領域内で
あまりモーダルビューを使ったことがなかったので、たまに使う場合の備忘録として記事にしておこう。 モーダルビューを使うと、現在の画面に一時的に別の画面を表示させることができる。 UIViewとアニメーションを使って同じようなこともできるけど、モーダルビューを使うと手っ取り早い。 それでは実際にモーダルビューを使ってみる。 ・ModalViewController ・・・ モーダルビューとして呼び出されるビュー ・ViewController ・・・ モーダルビュー呼び出し元のビュー として実装していく。 以下コード。 主要部分だけを説明していく。赤字の部分がポイント箇所。 ModalViewControllerには、背景色とモーダルビューを非表示にするボタンを実装する。 ◎ModalViewController.h #import <UIKit/UIKit.h> @interface Mod
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く