在提交here的帖子后,我尝试将XIB文件中定义的视图加载到当前正在显示的视图中。基本上,我想要做的是当用户点击按钮时用不同的视图替换中间视图(见下面的截图)。
这是我想加载到中间视图的简单视图:
这是ViewController的源代码:
ViewController.h #import
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *loadxibButton;
@property (strong, nonatomic) IBOutlet UIView *middleView;
- (IBAction)buttonClicked:(id)sender;
@end
ViewController.m #import“ViewController.h”
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (IBAction)buttonClicked:(id)sender {
NSLog(@"click...");
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"NewMiddleContent" owner:self options:nil];
UIView *nibView = [nibObjects objectAtIndex:0];
self.middleView= nibView;
}
@end
当我点击按钮时,没有任何反应,即不会显示新视图。有人可以帮忙吗?
非常感谢 基督教
答案 0 :(得分:2)
而不是
- (IBAction)buttonClicked:(id)sender {
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"NewMiddleContent" owner:self options:nil];
UIView *nibView = [nibObjects objectAtIndex:0];
self.middleView= nibView;
}
我现在使用此代码:
- (IBAction)buttonClicked:(id)sender {
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"NewMiddleContent" owner:self options:nil];
UIView *nibView = [nibObjects objectAtIndex:0];
nibView.frame = CGRectMake(261, 0, 532, 748);
[[[self view] viewWithTag:2] removeFromSuperview];
[[self view] addSubview:nibView];
}
这是否意味着你的意思,即这就像“最佳实践”?
再见 基督教
答案 1 :(得分:1)
您的视图控制器具有view
属性,可能有三个子视图(左,中,右)。您的策略应该是更新主视图的子视图数组(删除要替换的数组并插入新的数组),而不是仅在控制器中设置middleView
属性。