UIBarButtonItem に設定したボタン画像を切り替えて状態を維持する方法
ナビゲーションバーにオリジナルのボタン画像を配置して、そのボタンをタップしたら画像を別画像に切り替えたい場合に使えると思います。
実装例
viewDidLoad とかで以下のように UIBarButtonItem を設定します。
UIButton *imgBt = [UIButton buttonWithType:UIButtonTypeCustom];
imgBt.frame = CGRectMake(0, 0, 44.0f, 44.0f);
[imgBt addTarget:self
action:@selector(btAction:) forControlEvents:UIControlEventTouchUpInside];
[imgBt setImage:[UIImage imageNamed:@"bt_image_normal"]
forState:UIControlStateNormal];
[imgBt setImage:[UIImage imageNamed:@"bt_image_selected"]
forState:UIControlStateSelected];
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:imgBt];
self.navigationItem.rightBarButtonItem = barItem;
- (void)btAction:(id)sender
{
UIButton *bt = (UIButton*)sender;
if (bt.selected){
bt.selected = NO;
}else
bt.selected = YES;
}
ポイントは、UIButtonのsetImage:forState:でUIControlStateSelectedを指定することです。UIControlStateHighlightedではタップして指を離すとUIControlStateNormalで指定した画像に直ぐに戻ってしまいます。他にもやり方があるかもしれませんが、自分的にはこの方法が一番簡単だと思います。
コインスペース 東急プラザ渋谷店が超快適!
前から気になっていたコインスペースを利用してみました。
東急プラザ渋谷の1F/2Fにあり渋谷駅からアクセスもよい。
フリードリンク
wifi有り(特に契約など不要)
空調有り
利用料:12分100円、最大1000円
【2014/6/5追記】
※ 2014年6月1日から利用料が最大1500円になっていました。
2F喫煙スペース有り
食べ物持ち込みOK
会議室有り
営業時間:9:00〜22:00
再入場はできないそうなので、長時間居る予定の場合は何か食べ物を買ってから行った方がよさそうです。
平日の正午頃に行きましたが、かなり空いていました。
オススメです。
UIViewControllerでUIRefreshControlを使う方法
UIRefreshControl はテーブルビューで引っ張ってセルのデータを更新するときに使えるiOS標準の機能です。
UITableViewControllerでrefreshControlプロパティに設定しても使えますが、今回はUIViewController内でUITableViewを表示する構成でのUIRefreshControlの実装方法をメモ。
利用条件:iOS6以上
実装例
変数を宣言
@property (nonatomic, strong) UIRefreshControl *refreshControl;
viewDidLoadでUIRefreshControlのインスタンスを生成し、
UIViewControllerに追加したUITableViewのインスタンスにaddSubviewします。
_refreshControl = [[UIRefreshControl alloc] init];
[_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.myTableView addSubview:_refreshControl];
- (void)refresh:(id) sender
{
// 更新開始
[sender beginRefreshing];
}
更新を停止したいタイミングで以下を実行します。
[_refreshControl endRefreshing];
オーガナイザでアプリをアップロードする時に出たエラーの対処
アプリが完成していざ申請のためアプリをアップロードしようとしたら、
よく分からないエラーが出ることが多々あります。
今回は以下のエラーが出ました。
エラーメッセージ
There was a general exception while executing
An exception has occurred: null
このエラーメッセージからは原因がわからないため、色々と検索して調べましたが
有力な情報が出てきません。
全く原因が分からず困りましたが、もしやと思い再度Distributeしてみると、、、
アップロードが完了するまでちょっと時間(数分)がかかりましたが、無事にアップロードできました。
CocoaPodsのエラー対処
$ pod install でライブラリを追加しようとしたら下記エラーが出て追加できなかったので対処方法をメモ。
[!] The `master` repo requires CocoaPods 0.32.1 -
このエラー内容をみる限り、CocoaPodsのバージョンが古いみたいなので、現在のバージョンを確認。
$ pod --version
0.29.0
確かにバージョンが古かったので、迷わずバージョンアップを実行。
$ sudo gem update --system
$ sudo gem update cocoapods
バージョンアップ完了後、念のため現在のバージョンを確認。
$ pod --version
0.32.1
バージョンアップ成功。
その後、ライブラリも無事に追加できました。