UITableViewControllerを使わないでUITableViewを使った時に必要なこと

UITableViewControllerを使わないでUITableViewを使う時は
UITableViewを配置したコントローラーで

UITableViewDataSource
UITableViewDelegate

をデリゲートして下記のメソッドを実装する。


- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}

- (void)viewWillAppear:(BOOL)animated
{
// Unselect the selected row if any
NSIndexPath* selection = [self.tableView indexPathForSelectedRow];
if (selection)
[self.tableView deselectRowAtIndexPath:selection animated:YES];

[self.tableView reloadData];
}

- (void)viewDidAppear:(BOOL)animated
{
// The scrollbars won't flash unless the tableview is long enough.
[self.tableView flashScrollIndicators];
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[self.tableView flashScrollIndicators];
}


参考サイト
http://ashitamile.cocolog-nifty.com/blog/2010/07/uitableview-56c.html
UITableViewControllerを使わないでテーブルビューを使うとき実装すべきメソッド
スポンサーサイト

message sent to deallocated instanceで落ちた時のデバッグ方法いろいろ

message sent to deallocated instanceでメモリエラーとなった時の調査方法が色々あるようなのでメモ。


参考サイト
【iPhone】メモリ不足時のシミュレートとデバッグ
二重解放 (double free) や 解放済みオブジェクトへのアクセス (EXC_BAD_ACCESS) によるクラッシュを Instruments を使って調べる

NSDictionaryでkeyが存在するかどうか確認する方法

NSDictionaryでkeyが存在するかどうか確認する方法。
あらかじめ用意されてないみたいなので。


if ([[dictionary allKeys] containsObject:key) {
// 存在する場合の処理
}


value値がnilだと、key自体も無くなるのでそこだけ注意。

objective-cでクラスの判定

継承しているクラスの判定

if ([object isKindOfClass:[NSString class]]) {
// NSStringクラスか、それを継承したクラスの場合
...
}


そのクラスかどうかを判定(継承は関係無し)

if ([object isMemberOfClass:[NSString class]]) {
// NSStringクラスの場合
...
}

UINavigationControllerで前のviewに戻る方法

一つ前に戻る方法は、UINavigationControllerがデフォルトでナビゲーションバーに用意してくれている。

他の箇所で一つ前に戻る場合

[self.navigationController popViewControllerAnimated:YES];


一番最初の階層まで戻る場合

[self.navigationController popToRootViewControllerAnimated:YES];


タブバーで遷移する方法

[self.tabBarController setSelectedIndex:1];

UIToolBarに画像のボタンを追加する方法

UIToolBarにカスタムのボタンを追加する方法。

UIButton *customView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 95, 33)];
[customView setBackgroundImage:[UIImage imageNamed:@"appstore.png"]
forState:UIControlStateNormal];
[customView addTarget:self action:@selector(appstoreAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* buttonItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
self.navigationItem.rightBarButtonItem = buttonItem;

UIButtonを作成して、UIBarButtonItemのinitWithCustomViewで生成する。

間違えやすいのは
self.navigationItem
のbuttonItemに追加する。
self.navigationController.navigationItemじゃダメ。

参考サイト

addsubviewする時にフェードインで表示させる方法

iphoneアプリでaddsubviewする時にフェードインアニメーションっぽくする方法。

[myView setAlpha:0.0];
myView.backgroundColor = [[UIColor alloc] initWithRed: 0.0
green: 0.0
blue: 0.0
alpha: 0.0];
// アニメーション処理
[UIView beginAnimations:nil context:NULL];
// 0.75秒で
[UIView setAnimationDuration:0.75];
[myView setAlpha:1];

myView.backgroundColor = [[UIColor alloc] initWithRed: 0.0
green: 0.0
blue: 0.0
alpha: 0.8];
[self.view addSubview:myView];
[UIView commitAnimations];


setAlphaは、myView全体のalphaなので、文字とかも透明になる。
背景だけしたい場合はbackgroundColorのalphaで行う。

UITableViewのSeparatorの色を変更する方法

変更したいタイミングで

tableView.separatorColor = [UIColor blueColor];

をすればOK。

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事