根据苹果的文档在这里,我们应该能够通过连接网点页面视图控制器加入到故事板,然后选择设置数据源.
使用故事板创建页面视图控制器界面
基于页面的应用程序Xcode模板创建一个新的项目,其中页面视图控制器作为初始场景.
要将页面视图控制器添加到现有故事板,请执行以下操作:
- 将页面视图控制器拖出库.将页面视图控制器场景添加到故事板.
- 在"属性"检查器中,设置适当的选项.
- (可选)通过连接相应的插座来设置委托,数据源或两者.
- 通过在"属性"检查器中选择"是初始视图控制器"选项(或以其他方式在用户界面中显示视图控制器)将其显示为第一个视图控制器.
然后我像这样定义了一个UIPageViewController子类
@interface DetailsPageViewController : UIPageViewController <UIPageViewControllerDataSource>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接数据源插座时,它不会突出显示控制器或允许连接它.我也试过在其他控制器上实现UIPageViewControllerDataSource,但我有同样的问题,无法连接插座.
有人可以帮忙吗?
objective-c interface-builder uistoryboard uipageviewcontroller
我有一个自定义的UIView子类,它在初始化过程中以编程方式添加子视图.我希望这个子视图与自定义UIView的宽度相同.
如果我以编程方式添加自定义UIView,我的代码工作正常.但是,当通过StoryBoard初始化UIView时,我无法获得自定义UIView的宽度.
// Init programatically
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSLog (@"view: %f", self.frame.size.width); //WILL return width
NSLog (@"view: %f", self.bounds.size.width); //WILL return width
}
return self;
}
// Init from storyboard
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
NSLog (@"view: %f", self.frame.size.width); //Returns 0
NSLog (@"view: %f", self.bounds.size.width); //Returns 0
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
当initWithCoder:由StoryBoard运行时,UIView的框架和边界都返回为0.有没有办法在 initWithCoder 中访问UIView的尺寸?或者,至少在调用drawRect:之前访问维度?
谢谢.
我必须为新iPad实现分屏功能,我从Apple的doc获得了一个解决方法,以支持我的应用程序:https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad /QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13-SW1
在本文档中,请检查第2点:
提供LaunchScreen.storyboard文件(而不是像iOS 7及更早版本中那样的.png图像文件)
这就是我必须使用Launch screen.storyboard的原因.现在,拆分工作完美,但对于我的应用程序,我有单独的启动屏幕,默认纵向和默认景观.但是现在我已经采用了故事板,我无法为不同的方向定制启动屏幕.甚至我无法在Launch屏幕中编写相同的代码,否则它会给我错误.
此外,我尝试使用大小类为两个方向提供单独的图像视图,但我没有成功.
如果有人建议我如何使用不同的图像实现风景和肖像的Launch screen.storyboard,那将是很有帮助的.
更新:我已决定针对我的问题采取不同的路线.我没有尝试直接重用相同的UIViewController,而是使用两个设置为rootViewControllers的 vanilla UIViewControllers.在他们的loadView方法中,他们调用获取前UIViewController并将其视图设置为控制器的视图.这可能是首选的方法,因为我需要设置几个变量和委托.[storyboard instantiateViewControllerWithIdentifier:]
我有一个带有UITabBarController的UIStoryBoard作为与两个UINavigationControllers连接的入口点.每个人共享一个共同的UIViewController作为他们的根视图控制器.应用程序启动时,将选择第一个UITabBarItem,并按预期加载视图.但是,当我选择第二个UITabBarItem时,同一视图不可见.我看到UINavigationBar有黑色背景.我在使用Storyboard界面做错了什么,或者我是否需要通过每个UINavigationController的方法手动实例化UIViewController - 例如loadView?
uitabbarcontroller uiviewcontroller uinavigationcontroller ios uistoryboard
在我的代码中我有这一行,但我想知道是否有办法在我使用" instantiateViewControllerWithIdentifier "方法之前检查@"SomeController"是否存在.如果标识符不存在则应用程序崩溃.
如果没有一个好的方法,这不是一个大问题,我可以更加小心,不要吝啬标识符名称,但我希望我能更优雅地处理它.
UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SomeController"];
Run Code Online (Sandbox Code Playgroud) 我无法更新其他人在Xcode中创建的项目.这是一个内置在故事板中的应用程序,在一种情况下,有一个带有视图控制器的场景,它在故事板编辑器的文档轮廓调色板下面有多个视图(如附图所示).第一个视图是在单击时在故事板编辑器中突出显示的视图,以及在视图中更改视图更新的设计或对象时的视图.有一个第二个视图(退出和第一个响应者下面的视图)以某种方式附加到该场景但我无法弄清楚如何编辑该视图的设计.如果我点击该视图或其中任何一个孩子,我可以在右侧的各个检查员(连接,属性等)中清楚地看到他们的属性.
(编辑1 - 此问题的原始版本表明这些附加视图用于切换到横向时所需的特殊布局.实际上它们的使用比例更普遍,例如,在活动视图上显示弹出窗口时.)
无论如何,我的主要兴趣是能够修改第二个视图.似乎必须有一种方法可以在编辑器中看到它,我只是想念它.我已经搜索了关于在故事板中实现纵向和横向视图的教程(似乎没有使用这种方法),对于像"故事板场景中的多个视图"这样的短语,并查看了菜单选项(包括一个有前途的选项"unmbed",当时选择了第二个视图,但单击它时会从场景中删除视图,然后我找不到它.我不知道去哪里学习更多东西.如何编辑此视图?任何帮助表示赞赏.

在Xcode 6上,似乎已经取消了通过UIStoryboard设置滚动视图/表视图的内容插入的能力.见下图:

左边的参数来自Xcode 6,而右边的参数来自Xcode 5
有谁知道参数是否已移动,或者我们是否无法通过UIStoryboard设置内容插入?如果可能的话,我真的想保留我的代码.
我的Swift项目中有以下Storyboard Segue:

动画是正确的,但目标视图控制器中没有导航栏.我想强制目标视图控制器有一个导航栏.我在目标视图控制器中尝试过:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
navigationController?.navigationBar.hidden = false
}
Run Code Online (Sandbox Code Playgroud)
要么:
override func viewWillAppear(animated: Bool) {
self.navigationController?.setNavigationBarHidden(false, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
但它拒绝显示任何导航栏.
如何执行垂直segue(如"Cover Vertical")但仍在目标视图控制器中显示半透明导航栏?
编辑:目标视图控制器的我的属性检查器:

我试图在故事板中定位一个视图,使其始终位于屏幕尺寸的1/3处.我目前已经设置了一个约束到顶部布局指南,但约束的常量是......无论它使用哪个屏幕尺寸它都是常量,但我希望它是屏幕尺寸的1/3.这可以完全在故事板中完成吗?谢谢你的回答
当前状态的屏幕截图:
ios uistoryboard autolayout nslayoutconstraint universal-storyboard
我正在使用故事板设置按钮的约束.我在约束的属性中看到了一个选项"Identifier".

我想引用这个约束,改变它在代码中的值,移动一个对象.
如何NSLayoutContraint从此标识符中获取对此的引用.
我阅读了文档,它是这样编写的
@interface NSLayoutConstraint (NSIdentifier)
/* For ease in debugging, name a constraint by setting its identifier, which will be printed in the constraint's description.
Identifiers starting with UI and NS are reserved by the system.
*/
@property (nullable, copy) NSString *identifier NS_AVAILABLE_IOS(7_0);
@end
Run Code Online (Sandbox Code Playgroud)
所以我意识到这是出于调试目的.
如果我想获得它并使用它怎么办?我看到了这个链接,但没有给出令人满意的答案:如何通过其指针获取NSLayoutConstraint的标识符?
uistoryboard ×10
ios ×7
objective-c ×4
cocoa-touch ×2
uiview ×2
autolayout ×1
ipad ×1
segue ×1
swift ×1
uiscrollview ×1
uitableview ×1
xcode ×1
xcode4.2 ×1
xcode6 ×1