将 UIView 从 xib 添加到 UIScrollView

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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/…

以上是关于将 UIView 从 xib 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

使用 xib 将 tapGestureRecognizer 添加到自定义 UIView

如何将 UITableView 作为子视图添加到 xib 中的 UIView?

使用 XIB 将工具栏添加到 UIView

将带有 xib 的 UIView 子类添加到 UIViewController

将 UICollectionView 添加到 UIView

从同一个 xib 加载另一个 UIView 以添加为子视图