使用 UISegementedControl 切换到不同的 UITableViewController
Posted
技术标签:
【中文标题】使用 UISegementedControl 切换到不同的 UITableViewController【英文标题】:Switching to different UITableViewControllers with UISegementedControl 【发布时间】:2013-06-21 12:02:10 【问题描述】:我在导航栏中有一个 UINavigationViewController 和一个 UISegmentedControl。当用户按下分段控件时,我想实现对不同 ViewController 的简单切换。
我已经尝试了很多,但没有任何效果...考虑的来源:
MonoTouch Instantiating a ViewController programmatically for ContainerView https://***.com/search?q=viewcontroller+intptr+handle 还有很多谷歌研究...整个项目都是基于故事板的!任何针对 NIB 的解决方案都没有用。
将 ContainerControl 添加到我的 UINavigationViewController。但在这种情况下,我只能嵌入一个控制器。无法以编程方式创建 Embedded-Segue。在 IB 中设计的代码中更多地实例化 UITableViewController 会导致空视图。因为我必须将 c'tor 从 MyTableViewController(IntPtr handle) : base(handle) 更改为空构造函数。
有人可以发布一个工作示例如何使用 UISegmentedControl 在不同的 ViewController 之间切换吗?非常感谢您的帮助。
【问题讨论】:
【参考方案1】:工作解决方案:
public override void ViewDidLoad ()
base.ViewDidLoad ();
CreateAndEmbed (TrDetailNavType.Info);
partial void segmentNavigationValueChanged (MonoTouch.UIKit.UISegmentedControl sender, MonoTouch.UIKit.UIEvent e)
CreateAndEmbed((TrDetailNavType)sender.SelectedSegment);
private void CreateAndEmbed(TrDetailNavType tab)
if (_currentViewController != null)
_currentViewController.View.RemoveFromSuperview ();
_currentViewController.RemoveFromParentViewController();
string id;
switch (tab)
case TrDetailNavType.Info:
id = "TagesRapportDetailInfoTableViewController";
break;
case TrDetailNavType.Lohn:
case TrDetailNavType.Material:
case TrDetailNavType.Inventar:
case TrDetailNavType.Fremdleistung:
case TrDetailNavType.Regie:
id = "TagesRapportDetailDummyViewController";
break;
_currentViewController = (UIViewController)Storyboard.InstantiateViewController (id);
_currentViewController.View.Frame = containerDetail.Bounds;
AddChildViewController (_currentViewController);
_currentViewController.DidMoveToParentViewController (this);
containerDetail.AddSubview (_currentViewController.View);
【讨论】:
以上是关于使用 UISegementedControl 切换到不同的 UITableViewController的主要内容,如果未能解决你的问题,请参考以下文章