用从子视图调用的视图填充 iphone 屏幕
Posted
技术标签:
【中文标题】用从子视图调用的视图填充 iphone 屏幕【英文标题】:fill iphone screen with view called from subview 【发布时间】:2013-02-20 13:39:09 【问题描述】:我的应用中的视图上有一个 UIScrollView 和一个 UIPageControl。滚动视图包含 2 个视图控制器(page1 和 page2),每个页面都在一个单独的类中进行管理,并有一个按钮列表。
我的问题是,例如,当我在 page1 的一个按钮内触摸时,我想打开一个新控制器,并且新的 viewcontroller 显示为 scrollview 的子视图(是新的 page1),所以 pagecontrol 和 page2也正在显示,并且滚动仍然有效。
这很正常,因为我在 page1 代码中这样做:
void HandleTouchUpInside (object sender, EventArgs e)
MyNewController mnc = new MyNewController();
this.View.AddSubview(mnc.View);
所以我的问题是..
如何设置被调用的控制器来填充屏幕?是否可以用从子视图调用的视图填充屏幕?
已编辑:
谢谢
【问题讨论】:
【参考方案1】:使用故事板
我建议使用 StoryBoard 编辑器来设计您的 UI。按住 Control 从您的按钮拖动到您的 MyNewController。为 Action Segue 选择 modal。
使用代码
void HandleTouchUpInside (object sender, EventArgs e)
bool animated = true;
NSAction completionHandler = null;
MyNewController mnc = new MyNewController();
PresentViewController(mnc, animated, completionHandler);
解雇
在任何一种情况下,当您想从 MyNewController 关闭模态视图调用 DismissViewController
时。
bool animated = true;
NSAction completionHandler = null;
DismissViewController(animated, completionHandler);
【讨论】:
我不喜欢使用故事板,因为它会导致我想要的自定义控制器出现问题。我尝试了您的代码,但它将 newcontroller 显示为包含在滚动视图中的控制器,正如您在编辑后的帖子中看到的那样 这让我很吃惊;我认为 iPhone 总是将模态视图控制器呈现为全屏...(在 iPad 上,您可以设置 mnc.ModalPresentationStyle = UIModalPresentationStyle.FullScreen)我想您可以尝试 ParentViewController.PresentViewController(...)。【参考方案2】:最后我解决了从我的应用委托调用顶部导航控制器的问题。
void HandleTouchUpInside (object sender, EventArgs e)
Clases viewClases = new Clases();
AppDelegate del = (AppDelegate)UIApplication.SharedApplication.Delegate;
del._navController.SetNavigationBarHidden(false, true);
del._navController.PushViewController(viewClases, false);
更多信息 link
【讨论】:
以上是关于用从子视图调用的视图填充 iphone 屏幕的主要内容,如果未能解决你的问题,请参考以下文章