请注意,对于googlers来说,这个QA已经过时了六年!
正如下面的Micky和其他人所提到的,现在每天都在iOS中使用Containers.
我有一个控制许多子视图的ViewController.当我单击其中一个按钮时,我初始化另一个视图控制器并将其视图显示为该视图的子视图.但是子视图超出了子视图框架的边界,并且实际上填满了整个屏幕.
可能有什么不对?我认为问题是UIViewController的视图有一个框架(0,0,320,460),因此填充整个屏幕(尽管只有在子视图边界内触摸时它才会接收到触摸事件).如何调整框架大小以适合子视图.
简而言之,我需要帮助将viewcontroller的视图作为子视图添加到另一个viewcontroller的视图中.
谢谢!
我正在尝试建立一个机制来深入查看文件/文件夹列表.想法是每次用户选择文件夹时显示相同的文件列表视图控制器,并且如果他/她选择文件则显示文件详细视图控制器.
到目前为止,我已经从文件列表视图控制器创建了一个segue到文件详细信息视图控制器,并从文件列表表视图单元格到文件列表表视图控制器创建了一个segue:
这个问题是,一旦用户点击单元格,就会执行segue.我想从表视图单元格中删除segue,并从文件列表视图控制器中创建一个到自身.这样,当用户点击单元格时,我可以以编程方式触发右侧segue.
所以,我的问题是:是否可以在Interface Builder中从视图控制器创建一个segue?
由于对这个常见的反复问题没有完整,明确的答案,我会在这里提出并回答.
通常我们需要提供一个UIViewController不覆盖全屏的内容,如下图所示.

Apple提供了几个类似的UIViewController,如UIAlertViewTwitter或Facebook共享视图控制器等.
我们如何为自定义控制器实现此效果?
我正在为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
我有几个UIViewControllers故事板.现在我想把一些UIViewControllers转移到另一个故事板.可能吗?
我有一个UIView,它不在UIScrollView中.我想在键盘出现时向上移动我的视图.在我尝试使用此解决方案之前:如何在键盘存在时使UITextField向上移动?.
它工作正常.但是在文本字段中插入数据后,它会转到另一个视图,当我回到这个页面时,它只是跳跃,我看不到我的文本字段.有没有更好的解决方案来解决这个问题?
任何人都可以给我示例代码,我可以用来首先提出一个模态视图控制器,然后解雇它?这就是我一直在尝试的:
NSLog(@"%@", blue.modalViewController);
[blue presentModalViewController:red animated:YES];
NSLog(@"%@", blue.modalViewController);
[blue dismissModalViewControllerAnimated:YES];
NSLog(@"%@", blue.modalViewController);
此代码位于viewDidLoad中("blue"和"red"都是UIViewController的子类).我希望我会显示红色视图然后立即隐藏它,并带有一些动画.但是这段代码只提供了模态视图,并没有忽略它.任何的想法?第一个日志显示"null",而另外两个日志显示<RedViewController:0x3d21bf0> 我没有使用UIViewController故事板中的一个,我希望有一个自定义init函数,我传入NSManagedObjectID一些对象.我只想像super.init()在Objective-C中一样打电话.像这样:
init(objectId: NSManagedObjectID) {
super.init()
}
Run Code Online (Sandbox Code Playgroud)
但是我得到以下编译器错误:
必须调用超类UIViewController的指定初始值设定项
我可以不再这样做了吗?
我有一个UIPageViewController半透明的状态栏和导航栏.topLayoutGuide正如预期的那样,它是64像素.
但是,UIPageViewController报告的子视图控制器为topLayoutGuide0像素,即使它们显示在状态栏和导航栏下.
这是预期的行为吗?如果是这样,在真实情况下定位子视图控制器视图的最佳方法是topLayoutGuide什么?
(缺少使用parentViewController.topLayoutGuide,我认为是黑客攻击)
我有为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,它总是会返回self与init?(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) uiviewcontroller ×10
ios ×9
objective-c ×3
iphone ×2
storyboard ×2
swift ×2
uiview ×2
xcode ×2
autolayout ×1
cocoa-touch ×1
ios7 ×1
ios8 ×1
modal-view ×1
popup ×1
segue ×1
uialertview ×1
uitableview ×1