【发布时间】:2013-11-19 18:29:47
【问题描述】:
我有一个带有自己的 .xib 的 UIViewController,我想使用 UISegmentedControl 在屏幕的下半部分显示不同的信息。我在容器的 .xib 中创建了一个 UIView,并将其连接到容器的 UIViewController 中名为 detailView 的 UIView 属性。
然后我在 IB 中创建了三个 .xib 文件,一个用于每个段需要在detailView 区域中显示的视图。
我现在卡住了,因为我不知道如何将适当的 .xib 文件加载和卸载到 detailView 区域。我在这里:
- (void)segmentValueChanged:(id)sender {
switch ([sender selectedSegmentIndex]) {
case 0:
// Unload whatever is in the detailView UIView and
// Load the AddressView.xib file into it
break;
case 1:
// Unload whatever is in the detailView UIView and
// Load the ContactsView.xib file into it
break;
case 2:
// Unload whatever is in the detailView UIView and
// Load the NotesView.xib file into it
break;
default:
break;
}
}
那么如何填空并正确卸载/加载detailView UIView?
谢谢!
--更新--
viewDidLoad 中的代码现在是: - (void)viewDidLoad { [超级viewDidLoad];
// Set the default detailView to be address since the default selectedSegmentIndex is 0.
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"AddressView" owner:self options:nil];
// assuming the view is the only top-level object in the nib file (besides File's Owner and First Responder)
UIView *nibView = [nibObjects objectAtIndex:0];
self.detailView = nibView;
self.detailContainerView.autoresizesSubviews = YES;
[self.detailContainerView addSubview:self.detailView];
NSLog(@"self.view is %@", self.view);
NSLog(@"self.detailContainerView is %@",self.detailContainerView);
NSLog(@"self.detailView is %@", self.detailView);
}
调试器消息是:
self.view is UIView: 0x3a24d80; frame = (0 0; 320 460); autoresize = RM+BM; layer = CALayer: 0x3a35190
self.detailContainerView is UIView: 0x3a1aea0; frame = (20 57; 280 339); autoresize = W+H; layer = CALayer: 0x3a36b80
self.detailView is UIView: 0x3a24d80; frame = (0 0; 320 460); autoresize = RM+BM; layer = CALayer: 0x3a35190
谢谢!
【问题讨论】: