用从子视图调用的视图填充 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 屏幕的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 从子视图访问导航控制器

用列表视图填充屏幕

Backbone - 从子视图调用/引用父视图

从子视图推送新的视图控制器

从子视图调用超级视图函数

从子视图中删除视图不会调用 willRemoveSubview