1

在此处显示的帖子之后,我尝试将 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

当我单击按钮时,什么也没有发生,即不会显示新视图。有人可以帮忙吗?

非常感谢基督徒

4

2 回答 2

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];
}

这是你的意思,即这就像“最佳实践”吗?

再见克里斯蒂安

于 2012-11-03T18:09:09.183 回答
1

您的视图控制器有一个view属性,大概有三个子视图(左、中和右)。而不是仅仅在控制器中设置一个middleView属性,您的策略应该是更新主视图的子视图数组(删除要替换的数组并插入新的数组)。

于 2012-11-03T17:11:51.850 回答