UITableView の表示に現在使用している UITableViewController があります。次のことが可能になるように、このコントローラーに機能を追加する必要があります。
- デフォルトでは、コントローラのメイン コンテンツに UITableView が表示されます。
- 上部のナビゲーション バーの下に UISegmentedControl が表示されます。このコントロールには 2 つのオプションがあります。
- UISegmentedControl で 2 番目のオプションを選択すると、コントローラーのメイン コンテンツに UIWebView が表示されます。UIWebView を表示すると、UISegmentedControl は引き続き表示されます。
- UISegmentedControl で最初のオプションを選択すると、UITableView が再び表示されます。
現在、次のコードを使用してこれを実装しようとしました。
this.TableView.TableHeaderView = MakeHeaderControl ();
public UIToolbar MakeHeaderControl ()
{
try {
var toolBar = new UIToolbar (new RectangleF (0, 0, TableView.Bounds.Size.Width, 41));
toolBar.Items = null;
var seg = new UISegmentedControl (new RectangleF (5, 4, TableView.Bounds.Size.Width - 10, 33));
seg.InsertSegment ("First", 0, false);
seg.InsertSegment ("Second", 1, false);
seg.ControlStyle = UISegmentedControlStyle.Bar;
seg.SelectedSegment = 0;
seg.ValueChanged += (sender, e) => {
var web = new UIWebView (this.View.Frame);
this.View = web;
var req = new NSUrlRequest (new NSUrl ("URL"));
web.LoadRequest (req);
};
toolBar.Add (seg);
return toolBar;
}
このコードで直面している問題は次のとおりです。
- UISegmentedControl は UITableView でスクロールします。
- UIWebView が表示されている場合、UISegmentedControl は表示されません。
上記の 2 つの問題を回避してこの機能を実装するにはどうすればよいですか?