【问题标题】:Add UIView from xib to UIScrollView将 UIView 从 xib 添加到 UIScrollView
【发布时间】:2013-08-22 15:58:32
【问题描述】:

我正在制作一个应用程序,我从一个内部有一个视图的单个视图控制器开始。我制作了我的应用程序,但我想拥有多个页面并允许用户在它们之间滑动。我想使用 UISCrollView。如何设置 UIScrollView 以便我可以从 xib 插入我已经制作的视图。我不想以编程方式制作视图,因为其中很多都是图形化的,我真的不知道自己在做什么。

回顾:UIScrollView 在我在 xib 文件中创建的视图之间滑动

【问题讨论】:

    标签: ios objective-c uiview uiscrollview


    【解决方案1】:

    在您的主视图控制器中,添加一个滚动视图。您可以在 Xib 的主视图中添加滚动视图。

    在主视图控制器 .h 文件中添加一个属性,然后以编程方式加载您的视图并添加到滚动。设置每个视图位置。在主 xib 中正确设置滚动视图引用。

        @property(nonatomic, weak) IBoutlet UIScrollView *scrollView;
    
    UIView *view1 = [[NSBundle mainBundle] loadNibNamed:@"myViewXib1" owner:self options:nil];
    UIView *view2 = [[NSBundle mainBundle] loadNibNamed:@"myViewXib2" owner:self options:nil];
    UIView *view3 = [[NSBundle mainBundle] loadNibNamed:@"myViewXib3" owner:self options:nil];
    
    CGRect frame;
    frame = view1.frame;
    frame.origin.x = 0;
    view1.frame = frame;
    
    frame = view2.frame;
    frame.origin.x = view1.frame.size.width + view1.frame.origin.x ;
    view2.frame = frame;
    
    frame = view3.frame;
    frame.origin.x = view2.frame.size.width + view2.frame.origin.x;
    view3.frame = frame;
    [scrolView addSubView:view1];
    [scrolView addSubView:view2];
    [scrolView addSubView:view3];
    

    【讨论】:

    • 我复制了您的部分代码以适应我的单一视图 xib,但几乎每一行都出现错误。正如我在下面所说,我真的很缺乏经验,所以如果你能帮助我改变什么/把它放在哪里,那就太好了! ----- @property(nonatomic, weak) IBoutlet UIScrollView *scrollView; UIView *clockView = [[NSBundle mainBundle] loadNibNamed:@"BarsViewController" owner:self options:nil]; CGRect 框架;框架 = view1.frame; frame.origin.x = 0; view1.frame = 框架;
    • 我举了一个将视图放在一个前面的例子,请复制你的代码,我可以提供更多帮助。
    • @property(nonatomic, weak) IBoutlet UIScrollView *scrollView; UIView *clockView = [[NSBundle mainBundle] loadNibNamed:@"BarsViewController" owner:self options:nil]; [scrollView addSubView:clockView];
    • 我会告诉你我正在做什么,因为它不起作用。首先,我将 UIScrollView 从对象库拖到我的 viewController.xib 上。然后我把它放在我的 viewController.h 文件的括号外:@property(nonatomic,weak) IBoutlet UIScrollView *scrollView;之后,我把它放在 viewController.m 文件中,在 viewDidLoad: UIView *clockView = [[NSBundle mainBundle] loadNibNamed:@"BarsViewController" owner:self options:nil];它出现了警告“使用 'NSArray *' 类型的表达式初始化 'UIView *' 的不兼容指针类型”
    • 然后我把这个放在下面:CGRect frame;框架 = 时钟视图.frame; frame.origin.x = 0; clockView.frame = 帧;没有错误。在此之下,我输入: [scrollView addSubView:clockView];并得到错误“未知接收器'scrollView';你的意思是'UIScrollView'吗?”最后,我将 xib 中的 UIScrollView 连接到属性“*scrollView”。
    【解决方案2】:

    在视图控制器中声明 IBOutlet 以指向该视图。

    @property(nonatomic, weak) IBoutlet UIView *myView;
    

    将您的视图从 xib 连接到 myView。

    在视图控制器 viewDidLoad 方法中加载您的 xib

    [[NSBundle mainBundle] loadNibNamed:@"myViewXib" owner:self options:nil];
    

    然后将 myView 添加到您的滚动视图中。

    【讨论】:

    • 对不起,我对这一切都很陌生;我需要制作一个新的视图控制器来添加 UIScrollView 吗?对不起,这可能听起来很愚蠢,但如果你真的能具体一点,否则我会很迷茫。谢谢!
    • 您可以使用单视图控制器来管理您的滚动视图。您可以在 xib 中甚至在 viewDidLoad 中的代码中将滚动视图添加到视图控制器的视图中。如果您需要更多信息,可以参考 Apple 的滚动视图指南developer.apple.com/library/ios/documentation/WindowsViews/…
    猜你喜欢
    • 2016-02-29
    • 2018-10-07
    • 2012-02-14
    • 2012-12-28
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多