如何在xcode中创建一个nib文件的视图?
我有以下代码来创建一个视图,并把它在滚动视图允许分页
的代码工作正常但是我无法做的是加载从笔尖文件如何在xcode中创建一个nib文件的视图?
意见换句话说 我想使用“initWithNibName”而不是“initWithFrame”?
- (void)createPageWithColor:(UIColor *)color forPage:(int)page
{
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 300,400)];
newView.backgroundColor = color;
[scrollView addSubview:newView];
}
非常感谢
我认为你缺少的是你可以在加载笔尖后设置新UIView的框架。加载/初始化时间不是你唯一的拍摄。我也在下面的代码中将加载函数分解为它的代码片段,以便您可以更轻松地看到发生了什么。
观察:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"yournib"
owner:self
options:nil];
//I'm assuming here that your nib's top level contains only the view
//you want, so it's the only item in the array.
UIView *myView = [nibContents objectAtIndex:0];
myView.frame = CGRectMake(0,0,300,400); //or whatever coordinates you need
[scrollview addSubview:myView];
不要忘了为UIScrollView的实际滚动,你需要它的contentSize属性设置为里面的货物的大小,这可能比.frame财产做大滚动视图本身。
那就是我所说的:) 谢谢丹,你的解决方案完美的工作,是的,我已经改变了像scrollView.frame.size这样的scrollview视图的位置。宽度*页面“的x协调员 再次感谢您,让我的一天:) – ahmed 2010-06-22 13:45:10
尝试像这样(改编自 “iPhone的开发者食谱”,第174):
UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"yournib" owner:self options:nil] lastObject];
这在你的.xib假设一个单一的视图对象,但如果你的.xib更复杂,你可以修改它。
伟大的约翰,但我需要指定newView的位置,因为我将它添加到滚动视图 – ahmed 2010-06-22 12:15:04
评论了一些@John N错过了,但我错过了他没有错过它。所以没关系! – 2010-06-22 12:31:50
我知道这是一个旧帖子,但我想创建一个UIView作为一个单独的文件,并添加一个xib,所以我可以在我的应用程序的几个地方使用它(几乎就像使用它作为自定义表视图单元格) 。我无法完全理解,但这篇文章帮助我达到了我想要的结果。
如果有人想这样做同样的方式,使公正,这是我做的:
将此添加到您的UIView的.m文件的初始化代码:
- (id)initWithFrame:(CGRect)frame
{
self = [NSBundle mainBundle] loadNibNamed:NSStringFromClass(self.class) owner:self options:nil][0];
if (self)
{
self.frame = frame;
}
return self;
}
然后在界面生成器/ xib编辑器,您必须指定您为UIView创建的类,以便您可以添加IBOutlets。
希望它可以帮助别人,因为它花了我一点!
您可以使用我的简单类https://github.com/ulian-onua/KRNNib通过一个方法调用从nib文件创建视图。
例如,你可以在接下来的方式使用KRNNib:
UIView *view = [KRNNib viewFromNibWithName:@"TestView"];
[self.view addSubview:view]; // add instantiated view as subview to view of current UIViewController
如果你是做这种方式(和,不这样做,但如果你),你要记住了'添加到'scrollView'后的[newView release]。你的scrollView会在添加视图时保留视图,所以它不再属于你。 – 2010-06-22 12:39:08