2010-07-26 85 views
1

我知道使用界面构建器很容易创建一个NIB文件,但我想知道是否有办法将以前使用的现有UIView归档到NIB中。有没有办法以编程方式创建一个NIB文件?

它看起来像一个NIB文件只是一个特殊类型的捆绑包,其中每个UIView对象都使用NSCoding存档,但我似乎无法找到更多的信息。我发现的所有资源都使用界面构建器来创建适当的NIB文件。

任何帮助,将不胜感激!

回答

1

恐怕你不能。您可以将UIView存档为任何文件,但不能将其用作nib文件。

您可以使用nib2objc将nib文件的内容转储到Objective-C代码,但我想这不是您想要的。

+0

有趣的项目! – djdrzzy 2010-08-13 16:36:32

1

@Yuji ..你的回答是不正确的。一个“笔尖”和一个“视图”就像同卵双生 - 它们有着不同的“态度”。他们本质上,完全一样,并可能被迫做同样的事情......但他们出生在不同的医院,并与独立的家庭生活在一起。

当你“档案” ..或“拷贝”的观点是根本,而本质上一样的东西IB确实通过encodedecodewithCoder不同,并经常被误解的途径和方法,即

会发生什么
- (id)initWithCoder:(NSCoder*)coder { 
    if ((self = [super initWithCoder:coder])) { 
    backgroundColor = [coder decodeObjectForKey:@"backgroundColor"]; 
    uniqueID = [coder decodeObjectForKey: @"uniqueID"]; 
    [self updateTrackingAreas]; 
    if (something) [self addSubview:atv]; 
} return self; } 
- (id)copyWithZone:(NSZone *)zone; { return self; } 
- (void) encodeWithCoder:(NSCoder *)aCoder { 
    [aCoder encodeObject:backgroundColor forKey:@"backgroundColor"]; 
    [aCoder encodeObject:uniqueID forKey:@"uniqueID"]; 
    [aCoder encodeObject:file forKey:@"file"]; 
    [aCoder encodeObject:atv forKey:@"atv"];  
    [aCoder encodeBool:hasText forKey:@"hasText"]; 
} 

这完全是一个schlemiel schlomozel种类的东西......不同的人为不同的笔画。 Xcode碰巧是一个编译器这是更好的阅读一些疯狂的XML种事情(一个NIB)比我们..虽然我们习惯了与我们的手与客观C.不同的手段为同一目的。

您是否认为Xcode正在向您不知道的汇编程序窃窃私语?不要嫉妒!

相关问题