1

ここに提示された投稿に続いて、XIB ファイルで定義されたビューを現在表示されているビューにロードしようとしました。基本的に、私がやりたいことは、ユーザーがボタンをクリックしたときに、中央のビュー (下のスクリーンショットを参照) を別のビューに置き換えることです。

私のViewControllerのレイアウト

これは、中央のビューにロードしたい単純なビューです。

ここに画像の説明を入力

そして、これはViewControllerのソースコードです:

ViewController.h #インポート

@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、おそらく 3 つのサブビュー (左、中央、右) を持つプロパティがあります。コントローラーでプロパティを設定するだけでなくmiddleView、プライマリ ビューのサブビュー配列を更新する (置き換えるものを削除し、新しいものを挿入する) ことを戦略として行う必要があります。

于 2012-11-03T17:11:51.850 に答える