2017-02-12 16 views
3

アイテムのリストを持つxamarinピッカーがあり、iPhoneで「done」ボタンを押し、アンドロイドで「oke」ボタンを押したときにピッカーを削除したいと思います。
ピッカーを削除するコードがあります。しかし、私はevent_Handlerがどのような可能性があるのか​​分からない。Event_ピッカーの完了ボタンのハンドラ

コード:それはiPhone上でどのように見えるかの

Picker picker = new Picker 
    { 
     Title = "What's in the slot?", 
     VerticalOptions = LayoutOptions.CenterAndExpand 
     //HorizontalOptions = LayoutOptions.Center 

    }; 

private void Displaypickerview(int row, int column) 
    { 
     if (status == "filling board") 
     { 
      foreach (string text in pickerText) 
      { 


picker.Items.Add(text); 
     } 
     foreach (string ore in oreLevels) 
     { 
      picker.Items.Add(ore); 
     } 


     picker.SelectedIndexChanged += (sender, args) => 
     { 
      if (picker.SelectedIndex == -1) 
      { 

      } 
      else 
      { 
       //change value of cell and button 
       Picker picker = (Picker)sender; 
       int index = picker.SelectedIndex; 

       if (index < pickerText.Length) 
       { 
        board[row, column].Text = pickerText[index - 1]; 
       } 
       else { 
        board[row, column].Text = oreLevels[index - 1 - pickerText.Length]; 
       } 
      } 
     }; 
    } 
    else if (status == "choosing item") 
    { 

    } 

} 

例:

Picker

+0

から作品のように見えるあなたのSelectedIndexChangedイベントハンドラで、それを削除することができませんか? – mm8

+0

私はそれを試しましたが、null例外でアプリがクラッシュし、ユーザーがスクロールするたびにピッカーを閉じる – Cing

+0

例外のコード行はどのような場合に発生しますか? – mm8

答えて

4

残念ながら、あなたがするので、あなたのケースでAndroidとiOSのために同じイベントを使用することはできません。

現在、Pickerコントロールは、OKボタンの後にAndroidでSelectedIndexChangedイベントを送信しますttonが押された。ただし、iOSでは、ユーザーがピッカーをスクロールしてアイテム上で停止させるたびにイベントが送信されます。

これは既知の問題です。hereから引用します。

SelectedIndexChangedイベントとUnfocusイベントを組み合わせて目標を達成する必要があります。あなたは、このトピックでは、ここでいくつかの解決策を見つけることができ https://forums.xamarin.com/discussion/20847/picker-selection-event

UPD: は、私は右のあなたの質問を理解していなかったように見えます。私は今それをしたので、カスタムレンダラを使用して、必要なロジックを指定する必要があります。

iOSの場合。 PickerRendererの継承されたカスタムレンダラを作成し、そのような何かを実装:Andoridについて

protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) 
    { 
     base.OnElementChanged(e); 

     var extendedPicker = e.NewElement as ExtendedPicker; 
     if (extendedPicker == null) return; 

     var toolbar = new UIToolbar(new CGRect(0.0f, 0.0f, Control.Frame.Size.Width, 44.0f)); 

     toolbar.Items = new[] 
     { 
      new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), 
      new UIBarButtonItem("Done", 
       UIBarButtonItemStyle.Done, 
       delegate { 
        Control.ResignFirstResponder(); 
       }) 
     }; 

     if (this.Control != null) 
     { 
      Control.InputAccessoryView = toolbar; 
     } 
    } 

を、それはボックス

+0

私はオンラインで検索していますが、どのような焦点と焦点が合っていないのか説明できませんでした。 – Cing

+0

答えが – kudrya

+0

であることを確認してください。noobyに関するご質問は申し訳ありませんが、どのように私は何かを継承しますか? – Cing

関連する問題