78

テーブルからデータをロードするiPhoneデータベースアプリがUIPickerViewあります。選択した行を別のテーブルのデータから特定の行に設定したい。

例:iPhoneユーザーの友達の名前のX個がロードされているとしましょうUIPickerView(名前の数は可変です。1または1000で、すべてユーザーがデータベースに入力します)。iPhoneユーザーには、現在の親友がTEDであるという設定があります。表示時にTEDUIPickerViewの位置にしたい。

どこに電話すればいいselectRowですか?

試してみましたviewDidAppearが、呼び出されなかったtitleForRowため、あらゆる種類の奇妙な動作が発生しました。viewDidLoadピッカーのデータソースに何が入ってviewWillAppearいるのかまだわからないので、問題外です。

4

6 に答える 6

142

データを取得した後に呼び出します。データをロードする場所がわからないため、これは機能するもののモックアップにすぎません。これが意味をなさない場合は、データをロードしている場所を教えてください。頭の中でつなぎ合わせることができます:)

-(void)viewDidLoad
{
    // load data from sql
    // self.someDataArray = DATAFROMSQL
    [picker reloadAllComponents];
    [picker selectRow:0 inComponent:0 animated:YES];
}
于 2009-05-01T20:07:16.607 に答える
44

UIPickerView が最初に表示されたときに (デフォルトの) UIPickerView アイテムを選択する必要がある場合、よくある問題があります。問題は一連のイベントに関連しています。以前の投稿を読むと、ビュー コントローラーの ViewDidLoad イベントで [pickerView selectRow:n] が通常呼び出されるようです。ただし、UiPickerView データは ViewDidLoad イベントの後にのみ読み込まれます。つまり、ViewDidLoad の選択コードは効果がありません。解決するには、選択コードを ViewDidAppear に配置します。

- (void) viewDidAppear:(BOOL)animated {
[m_pickerView selectRow:nSelectedItem inComponent:0 animated:YES]; }
于 2010-10-21T22:58:59.457 に答える
7

これをサブビューとしてUIView含むを初期化する場所に配置します。UIPickerView

[myPickerView selectRow:rowWithTedsName inComponent:columnWithNames animated:NO];
于 2009-05-01T20:08:44.543 に答える
4

4.3 SDK では、コンポーネントのロード動作が iPhone と iPad で異なることがわかりました。iPhone では、サブビュー階層に追加する前または後にビューを初期化した直後に selectRow: を呼び出そうとしていました。ただし、iPad では、selectRow 呼び出しで結果が得られませんでした。私は、selectRow:inComponent:animated: を起動する前に、performSelector:withObject:afterDelay: 呼び出しを使用して 0.1 秒待機することにしました。これにより、iPhone と iPad で予測可能な結果が得られました。

于 2011-04-25T16:55:41.923 に答える