我有一个显示一组缩略图的 View Controller ,最初它只显示 12,但我想允许更改它以允许不同的数字 9、6、4、2。
其中每一个都有不同的布局,所以我想加载不同的 XIB 但使用相同的 View Controller 类。所以我希望我可以通过传递一个参数来实现这一点,该参数可以让我知道在初始化时加载哪个 XIB。
这是我目前的初始化:
-(id) initWithPriceLevel: (NSNumber *) aPriceLevel withLabelTemplate:(NSString *) aLabelTemplate withPageSize: (int) aPageSize {
self = [self init];
if (self) {
self.priceLevel = aPriceLevel;
self.labelTemplate = aLabelTemplate;
if ([aPriceLevel isEqualToNumber:[NSNumber numberWithInt:0]]) {
self.key = @"BasePrice";
} else {
self.key = [NSString stringWithFormat: @"PriceLevel%@", aPriceLevel];
}
queue = dispatch_queue_create("com.myapp.thumbnailimages", NULL);
}
return self;
}
我假设我可以在 aPageSize
上使用某种开关,让我加载不同的 XIB。
最佳答案
这很简单,我会保留这个问题以防它对其他人有帮助。我像这样修改了我的 init:
-(id) initWithPriceLevel: (NSNumber *) aPriceLevel withLabelTemplate:(NSString *) aLabelTemplate withNibName:(NSString *) aNibName {
if ([aNibName isEqualToString:@""]) {
aNibName = @"PageCollectionViewController";
}
self = [self initWithNibName:aNibName bundle:nil];
if (self) {
self.priceLevel = aPriceLevel;
self.labelTemplate = aLabelTemplate;
if ([aPriceLevel isEqualToNumber:[NSNumber numberWithInt:0]]) {
self.key = @"BasePrice";
} else {
self.key = [NSString stringWithFormat: @"PriceLevel%@", aPriceLevel];
}
queue = dispatch_queue_create("com.myapp.thumbnailimages", NULL);
}
return self;
}
我添加了参数来传递一个 Nib 名称,如果它只是一个空字符串,我使用默认的 Nib 名称。这非常有效,并为我提供了我一直在寻找的灵 active 。
关于iphone - init ViewController 根据传入的参数加载不同的 XIB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9601894/