uipickerviewと同じようにuitableviewを使いたいです。ボタンをクリックすると、uitableviewが表示されます。セルをクリックすると、選択した値が前のページのボタンに表示されます。
5 に答える
データを別のコントローラーに戻す通常の方法は、delegate
プロトコルを使用することです。@protocol
ボタン付きのコントローラーは、テーブルビューコントローラーの.hファイルに配置された宣言で宣言されたプロトコルメソッドを実装します。このtableView:didSelectRowAtIndexPath:
メソッドでは、クリックされたセルの値を渡して、デリゲートメソッドを呼び出します。
rdelmarは正しいです。これを行う最も簡単な方法は、デリゲートプロトコルを使用して、選択した値を前のビューに戻すことです。
-
ただし、この値をテーブルビューとピッカーの外部に格納したい場合は、シングルトンを作成するか、NSUserDefaultsを使用して、値を渡して何かを失う可能性を回避できます。このテーブルビュー/ピッカーが設定メニューなどにある場合は、それを実行します。
基本については、こちらをご覧ください:http: //mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/
これを使うだけ
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *cell=[self.m_TableView cellForRowAtIndexPath:indexPath];
AppDelegate* appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.m_SavedDictionary setObject:cell.textLabel.text forKey:@"driver"];
[self.navigationController popViewControllerAnimated:YES];
}
以前のビュー使用のViewwillAppearメソッド。
if([[appDelegate.m_SavedDictionary objectForKey:@"driver"]length]>=1)
{
[m_driverButton setTitle:[appDelegate.m_SavedDictionary objectForKey:@"driver"] forState:UIControlStateNormal];
}
それでおしまい。
委任のためのいくつかのコード。テーブルビュークラスのプロトコル:@protocol SelectionDelegate <NSObject>
-(void)setSelectedTableCellValue:(NSString*)value;@end
前のビューで、表示するテーブルビューを確認して代理人にし、プロトコルメソッドを実装します。[delegate setSelectedTableCellValue:<some cell value>];
次に、セルの選択で、セルの値を取得し、 HTHを介してデリゲートに渡します。
コアデータを確認することをお勧めします。データを保存し、データ/値に再度アクセスして、任意のViewControllerにリロードすることができます。これは非常に用途の広いツールであり、一度習得すれば、非常に多くのことをはるかに簡単に行うことができるようになります。このチュートリアルを見てください