iOS Swift 中的 Android 片段模拟

Posted

技术标签:

【中文标题】iOS Swift 中的 Android 片段模拟【英文标题】:Android fragments analog in iOS's swift 【发布时间】:2016-03-09 03:09:16 【问题描述】:

我正在 Swift 中迈出第一步(入手 3 天),需要类似 android 的 Fragments 之类的东西

我需要做什么:

在带有自己的控制器的 xibs 中有一些视图,并将它们膨胀到某个视图容器中,以便它们可以填充所有容器。

例如,我有一个位于 iPad 屏幕左侧的菜单,而在 iPhone 上,该菜单将隐藏在抽屉中。通过点击一个菜单项,我将需要的片段充气到一个容器中,在 iPad 的情况下占据屏幕右侧的 3/4,在 iPhone 的情况下占据全屏。

通过这种方法,我不必担心我的 Fragment 视图显示在哪里,它占据了屏幕的哪个部分(或者可能是整个屏幕),因为它是一个单独的 Fragment,它有自己的控制器,可以被另一个片段替换(或堆叠),如果我想返回堆栈,前一个片段将成为焦点

ios 是否有这样的模拟,或者我该如何实现?

【问题讨论】:

【参考方案1】:

为了实现类似于片段的东西,您必须在视图控制器中使用容器视图,并在其中填充 childViewControllers。

文档:Container View Controllers

您可以在 Xcode 的 Interface Builder 的对象库中找到“Container View”元素。

另外,您可以通过以下代码创建要添加的新视图控制器:

Obj-C 代码:

//To add child VC
- (void) displayContentController: (UIViewController*) content;

    [self addChildViewController:content];                 
    content.view.frame = self.containerView.bounds;
    [self.containerView addSubview:content.view];
    [content didMoveToParentViewController:self];          


//To remove child VC
- (void) hideContentController: (UIViewController*) content

    [content willMoveToParentViewController:nil];  
    [content.view removeFromSuperview];            
    [content removeFromParentViewController];      

【讨论】:

某种意义上的堆叠?如果您想在 Container 视图中堆叠 VC,那么您将不得不在两者之间使用 UINavigationController,就像这里提到的那样。 ***.com/questions/17778700/… 我的意思是,如果需要,我可以从这个片段返回到上一个片段 是的。您必须在容器视图中的 UINavigationViewController 实例上调用 popViewController 来执行此操作,因为它将维护容器中的 VC 堆栈。

以上是关于iOS Swift 中的 Android 片段模拟的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

CoreData 适用于我的模拟器,但不适用于使用 xCode 6 的 iOS 8 Swift 中的 iPhone

有没有办法通过 iOS/swift 中的蓝牙以编程方式连接 android 和 IOS 设备?

iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?

重新编辑:音频不在真正的 ios 设备中播放,而是在 Swift2 的模拟设备中播放

Flutter:未连接到 Android Studio 中的 IOS 模拟器