标签: uiviewcontroller

如何将UIViewController的视图添加为子视图

请注意,对于googlers来说,这个QA已经过时了六年!

正如下面的Micky和其他人所提到的,现在每天都在iOS中使用Containers.


我有一个控制许多子视图的ViewController.当我单击其中一个按钮时,我初始化另一个视图控制器并将其视图显示为该视图的子视图.但是子视图超出了子视图框架的边界,并且实际上填满了整个屏幕.

可能有什么不对?我认为问题是UIViewController的视图有一个框架(0,0,320,460),因此填充整个屏幕(尽管只有在子视图边界内触摸时它才会接收到触摸事件).如何调整框架大小以适合子视图.

简而言之,我需要帮助将viewcontroller的视图作为子视图添加到另一个viewcontroller的视图中.

谢谢!

iphone uiviewcontroller uiview

75
推荐指数
6
解决办法
12万
查看次数

从视图控制器到自身的故事板

我正在尝试建立一个机制来深入查看文件/文件夹列表.想法是每次用户选择文件夹时显示相同的文件列表视图控制器,并且如果他/她选择文件则显示文件详细视图控制器.

到目前为止,我已经从文件列表视图控制器创建了一个segue到文件详细信息视图控制器,并从文件列表表视图单元格到文件列表表视图控制器创建了一个segue:

在此输入图像描述

这个问题是,一旦用户点击单元格,就会执行segue.我想从表视图单元格中删除segue,并从文件列表视图控制器中创建一个到自身.这样,当用户点击单元格时,我可以以编程方式触发右侧segue.

所以,我的问题是:是否可以在Interface Builder中从视图控制器创建一个segue?

storyboard uitableview uiviewcontroller ios segue

74
推荐指数
7
解决办法
3万
查看次数

在iPhone中将UIViewController显示为Popup

由于对这个常见的反复问题没有完整,明确的答案,我会在这里提出并回答.

通常我们需要提供一个UIViewController不覆盖全屏的内容,如下图所示.

在此输入图像描述

Apple提供了几个类似的UIViewController,如UIAlertViewTwitter或Facebook共享视图控制器等.

我们如何为自定义控制器实现此效果?

iphone popup uiviewcontroller uialertview ios

74
推荐指数
4
解决办法
10万
查看次数

iOS7 UIModalTransitionStyleFlipHorizo​​ntal在转换后反弹

我正在为iOS 7更新我的应用程序,我发现了一个奇怪的问题.我正在展示一个包含在UINavigationController中的UIViewController UIModalTransitionStyleFlipHorizontal.

在iOS 6中它工作正常,但在iOS 7中,导航栏在转换后反弹.这与状态栏有关吗?我已将主导航栏的半透明度设置为NO.

在Info.plist中,基于View控制器的状态栏外观设置为NO.

这是一个GIF,在最小的演示应用程序中显示问题:

在此输入图像描述

这是我的代码:

feedNavigationController = [[UINavigationController alloc] init];
feedNavigationController.navigationBar.translucent = NO;

SettingsViewController *settingsVC = [[SettingsViewController alloc] init];

feedNavigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[feedNavigationController setViewControllers:[NSArray arrayWithObjects:settingsVC, nil]];

[self presentViewController:feedNavigationController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uiviewcontroller uinavigationcontroller ios uimodaltransitionstyle

73
推荐指数
3
解决办法
8006
查看次数

将视图控制器从一个故事板移动或复制到另一个故事板

我有几个UIViewControllers故事板.现在我想把一些UIViewControllers转移到另一个故事板.可能吗?

xcode storyboard uiviewcontroller ios

72
推荐指数
4
解决办法
4万
查看次数

当键盘出现在iOS中时,向上移动UIView

我有一个UIView,它不在UIScrollView中.我想在键盘出现时向上移动我的视图.在我尝试使用此解决方案之前:如何在键盘存在时使UITextField向上移动?.

它工作正常.但是在文本字段中插入数据后,它会转到另一个视图,当我回到这个页面时,它只是跳跃,我看不到我的文本字段.有没有更好的解决方案来解决这个问题?

xcode objective-c uiviewcontroller uiview ios

71
推荐指数
9
解决办法
11万
查看次数

显示和关闭模态视图控制器

任何人都可以给我示例代码,我可以用来首先提出一个模态视图控制器,然后解雇它?这就是我一直在尝试的:

    NSLog(@"%@", blue.modalViewController);
    [blue presentModalViewController:red animated:YES];
    NSLog(@"%@", blue.modalViewController);
    [blue dismissModalViewControllerAnimated:YES];
    NSLog(@"%@", blue.modalViewController);
此代码位于viewDidLoad中("blue"和"red"都是UIViewController的子类).我希望我会显示红色视图然后立即隐藏它,并带有一些动画.但是这段代码只提供了模态视图,并没有忽略它.任何的想法?第一个日志显示"null",而另外两个日志显示<RedViewController:0x3d21bf0>
另一点是,如果我将此代码放在applicationDidFinishLaunching中:红色视图根本不显示,并且所有日志都为"null"

objective-c uiviewcontroller modal-view ios

70
推荐指数
4
解决办法
20万
查看次数

为什么我不能在Swift中的UIViewController上调用默认的super.init()?

我没有使用UIViewController故事板中的一个,我希望有一个自定义init函数,我传入NSManagedObjectID一些对象.我只想像super.init()在Objective-C中一样打电话.像这样:

init(objectId: NSManagedObjectID) {
    super.init()
}
Run Code Online (Sandbox Code Playgroud)

但是我得到以下编译器错误:

必须调用超类UIViewController的指定初始值设定项

我可以不再这样做了吗?

objective-c uiviewcontroller ios swift ios8

70
推荐指数
4
解决办法
5万
查看次数

子视图控制器中的topLayoutGuide

我有一个UIPageViewController半透明的状态栏和导航栏.topLayoutGuide正如预期的那样,它是64像素.

但是,UIPageViewController报告的子视图控制器为topLayoutGuide0像素,即使它们显示在状态栏和导航栏下.

这是预期的行为吗?如果是这样,在真实情况下定位子视图控制器视图的最佳方法是topLayoutGuide什么?

(缺少使用parentViewController.topLayoutGuide,我认为是黑客攻击)

uiviewcontroller ios uipageviewcontroller autolayout ios7

69
推荐指数
4
解决办法
3万
查看次数

Swift中UIViewController的自定义初始化,故事板中的界面设置

我有为UIViewController的子类编写自定义init的问题,基本上我想通过viewController的init方法传递依赖,而不是直接设置属性 viewControllerB.property = value

所以我为我的viewController做了一个自定义初始化,并调用超级指定的init

init(meme: Meme?) {
        self.meme = meme
        super.init(nibName: nil, bundle: nil)
    }
Run Code Online (Sandbox Code Playgroud)

视图控制器界面位于故事板中,我还将自定义类的界面作为我的视图控制器.即使你没有在这个方法中做任何事情,Swift也需要调用这个init方法.否则编译器会抱怨......

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试调用我的自定义init时,MyViewController(meme: meme)它根本不在我的viewController中初始化属性...

我试图调试,我在我的viewController中找到,先init(coder aDecoder: NSCoder)调用,然后调用我的自定义init.但是这两个init方法返回不同的self内存地址.

我怀疑有毛病初始化为我的viewController,它总是会返回selfinit?(coder aDecoder: NSCoder),其中,有没有实现.

有谁知道如何正确地为您的viewController制作自定义初始化?注意:我的viewController接口是在storyboard中设置的

这是我的viewController代码:

class MemeDetailVC : UIViewController {

    var meme : Meme!

    @IBOutlet weak var editedImage: UIImageView!

    // TODO: incorrect init
    init(meme: Meme?) {
        self.meme = meme
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: …
Run Code Online (Sandbox Code Playgroud)

initialization uiviewcontroller ios swift

69
推荐指数
6
解决办法
5万
查看次数