有谁知道我为了将我自己的视图控制器手动添加到UIPageViewController方法而缺少什么?
我目前有这个,我不知道如何继续:
NSDictionary *pageViewOptions = [NSDictionary dictionaryWithObjectsAndKeys:UIPageViewControllerOptionSpineLocationKey, [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin], nil];
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:pageViewOptions];
BookViewController *pageOne = [self.storyboard instantiateViewControllerWithIdentifier:@"BookViewController"];
AnotherPage *pageTwo = [self.storyboard instantiateViewControllerWithIdentifier:@"AnotherPage"];
PageThree *pageThree = [self.storyboard instantiateViewControllerWithIdentifier:@"PageThree"];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
[self.pageViewController setViewControllers:[NSArray arrayWithObjects:pageOne, pageTwo, pageThree, nil] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
[self.pageViewController didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.我只看到RootViewController.
感谢所有喜欢提前帮助像我这样渴望新手的人.... :)
在我的应用程序启动时,它以编程方式显示使用segue的LoginViewController.视图控制器以模态方式呈现,过渡设置为交叉溶解.验证成功后,我想通过以编程方式触发展开segue来关闭登录视图.所以我把它添加到我的头文件中:
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
Run Code Online (Sandbox Code Playgroud)
现在在IB中,我可以控制 - 从"文件所有者"LoginViewController拖动到"退出"按钮并选择unwindSegue:.这将创建一个手动segue,它会在Connections检查器中显示File文件所有者和Exit按钮.然后我点击IB中场景中新创建的Unwind segue,然后给它起一个名字.如果我单击"转到"按钮进行展开segue操作,它会转到上面提到的声明.
到目前为止一切顺利,我在GCD块中成功验证后触发了这个解开segue:
....
dispatch_async(dispatch_get_main_queue(), ^
{
[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];
[self.spinner removeFromSuperview];
self.spinner = nil;
});
Run Code Online (Sandbox Code Playgroud)
.....并且当它运行时没有任何反应.微调器确实被正确删除,但没有迹象表明unwind segue正在执行.
执行中的断点unwindSegue:永远不会被击中.没有抛出任何错误.什么都没有写入控制台.标识符是正确的,我三重检查(否则它将失败).
我做了什么,虽然注意到,是Xcode认为unwindSegue:是不挂钩:

我无法从前面的小空圈拖动并将其unwindSegue:链接到"退出"按钮.
任何帮助将不胜感激.
我正在创建一个故事板应用程序,当用户执行滑动手势时,视图会发生变化.我遇到的问题是,当您将手势识别器拖放到main.storyboard文件的视图上时,可以从UIView内的任何位置识别手势.基本上,我需要识别在屏幕上的特定区域中执行的手势,类似于在IOS 6中向下拖动通知中心的方式.如果这不清楚或者您需要更多详细信息,请随时询问.
在此先感谢您的帮助!
(询问并自我回答,因为我在Google上没有发现任何点击,但最终通过反复试验找到了解决方案)
在iOS 5和6中,Apple添加了一些丑陋的黑客,使InterfaceBuilder支持"嵌入式"视图控制器.他们没有记录这些是如何工作的,他们只提供代码级示例,而且它们只涵盖了有限的一部分案例.
特别是,我希望有一个有时隐藏的嵌入式视图控制器 - 但如果你尝试使用明显的方法它不起作用(你会得到一个白色矩形):
childViewController.view.hidden = TRUE;
Run Code Online (Sandbox Code Playgroud) 我试图设置一个UIImageView在故事板中没有固定的大小和宽度.我将前导空间设置为大于或等于20,容器的顶部空间大于或等于20,容器的尾随空间大于或等于20,垂直间距为UICollectionView,UICollectionView满足限制.但UIImageView不起作用,它告诉我它的位置和大小都不明确.我怎样才能使它工作?我的想法是,无论图像视图有多大,它都会始终保持前后,顶部,尾部和底部的20个空间.
我将高度和宽度设置为大于或等于某个值,并将其优先级设置为999,它低于前导,上限和尾随优先级.我已将imageview设置为水平居中.但我得到的高度和垂直位置对于"图像视图"来说是模棱两可的.
我呈现的UIViewController是:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PhotoViewController *resultVC = [storyboard instantiateViewControllerWithIdentifier:NSStringFromClass([PhotoViewController class])];
[self.navigationController presentViewController:resultVC animated:YES completion:^{}];
Run Code Online (Sandbox Code Playgroud)
我已登录控制台,结果是:
po self.navigationController
<UINavigationController: 0x9c3e920>
Run Code Online (Sandbox Code Playgroud)
但是当我在PhotoViewController课堂上时,我已经记录了控制台,结果是:
po self.navigationController
nil
Run Code Online (Sandbox Code Playgroud)
它在这里没有.我不知道为什么会这样.我也有这个,但它总是:
[self presentViewController:resultVC animated:YES completion:^{}];
Run Code Online (Sandbox Code Playgroud) 我正在推出我的应用程序的第2版,需要对新功能进行简短的演练.我经历了一个教程并在另一个应用程序中创建了我的演练,其中一个UIViewController是根视图,一个UIPageViewController包含一个UIView,我在其中显示我的屏幕.它按我想要的方式工作.
现在我想在我的应用程序中集成它.我可以轻松地从示例应用程序导入我的编码.
我相信应用程序委托我将看到用户是否曾经历过演练,如果没有,请切换到启动演练的UIViewController,并写入用户已经看过演练的默认值(因此他们不会需要再次看到它.我在演练中有一个按钮进入主屏幕.
我对"applicationdidFinishLaunchingWithOptions"方法的部分代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor whiteColor];
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard.storyboard" bundle:nil];
UIViewController *walkthrough = [storyBoard instantiateViewControllerWithIdentifier:@"NextViewController"];
//[self presentViewController:walkthrough animated:YES completion:nil];
[self.window setRootViewController:walkthrough];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这是完成的代码.非常感谢您的帮助:
// User Defaults
UserDefaults *thisUserDefaults = [[UserDefaults alloc] init];
[thisUserDefaults registerDefaults];
if (![[[NSUserDefaults standardUserDefaults]
valueForKey:kAppHasRunBeforeKey] boolValue]) {
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用故事板和子类创建视图层次结构.我们的想法是UIViewController在故事板中有一个链接到基类的屏幕(当然,这是一个子类),并根据需要实例化子类.子类总是具有相同的布局,主要区别在于viewDidLoad函数.如果我打电话self.storyboard?.instantiateViewControllerWithIdentifier("menu"),我总是得到一个基类的实例,即使我添加as SubClass.
有没有办法以我想要的方式实例化子类?
我有以下设计.使用Storyboard我尝试了多种方法,但所有的努力都是徒劳的.
1 - View Controller 2的主要默认视图 - 包含图像视图和2个相等宽度按钮的视图3 - 使用Aspect Fill的图像视图(需要根据iPhone大小占用尽可能多的空间)
我得到的一切除了1个约束.包含2个按钮的ImageView和View之间的约束.(使用按钮的堆栈视图)
在某些屏幕尺寸中,带有Aspect填充的图像视图与堆栈视图重叠.Aspect Fit留下了大量的空白空间.
Image View需要根据尺寸扩展所有iPhone!(这似乎是通过Aspect Fill解决的,而不是方面适合)如何解决ImageView缩放时保持Image + 2按钮垂直居中(矩形2垂直和水平居中)的问题?
编辑:我也尝试过"Clip to Bound",但它会剪切两侧的图像.我想知道完整的设置,每个视图应该做什么或者如何组织每个视图以获得效果?
我为此做了一个自定义类。但这仅适用于左上角,不适用于其他:
@IBDesignable
public class RoundedView: UIView {
@IBInspectable public var topLeft: Bool = false
@IBInspectable public var topRight: Bool = false
@IBInspectable public var bottomLeft: Bool = false
@IBInspectable public var bottomRight: Bool = false
@IBInspectable public var cornerRadius: Int = 0
public override func awakeFromNib() {
var options = UIRectCorner()
if topLeft { options = options.union(.topLeft) }
if topRight { options = options.union(.topRight) }
if bottomLeft { options = options.union(.bottomLeft) }
if bottomRight { options = options.union(.bottomRight) }
let …Run Code Online (Sandbox Code Playgroud) uistoryboard ×10
ios ×8
swift ×3
iphone ×2
objective-c ×2
autolayout ×1
ios5 ×1
nsarray ×1
segue ×1
subclass ×1
uiview ×1