1

私は iOS 開発に飛び込んでおり、複数の子ビュー (この場合は 2 つの子ビュー) のサイズとレイアウトを制御する方法を見つけようとしています。この質問を別のコンテキストで投稿しましたが、回答が得られなかったので、より単純な質問として再投稿します。子ビューに追加してそれぞれ (0, 0) と (100, 100) に配置しようとしていますが、最初に追加したビュー (マスター) が画面全体を埋め尽くしてしまいます。私のコードは非常に単純ですが、2 つの子ビューのサイズと位置を制御できない原因は何ですか?

MySplitViewController.m

#import "MySplitViewController.h"
#import "MasterViewController.h"
#import "DetailViewController.h"

@interface MYSplitViewController (){}

@property (nonatomic, strong) MasterViewController *masterViewController;
@property (nonatomic, strong) DetailViewController *detailViewController;

@end

@implementation MySplitViewController

- (id)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if (self) {
      self.masterViewController = [[MasterViewController alloc] initWithNibName:nil bundle:nil];
      self.detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.frame = CGRectMake(0, 0, 768, 1004);
    [self.view addSubview:self.masterViewController.view];
    [self.masterViewController viewDidLoad];
    [self.view addSubview:self.detailViewController.view];
    [self.detailViewController viewDidLoad];
}

@end

MasterViewController.m

#import "MasterViewController.h"

@interface MasterViewController ()

@end

@implementation MasterViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 1004) style:UITableViewStylePlain];
    table.dataSource = self;
    table.delegate = self;
    [self.view addSubview:table];
}

@end

DetailViewController.m

#import "DetailViewController.h"

@interface DetailViewController ()

@end

@implementation DetailViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    UIView *uiview = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 668, 1004)];
    [self.view addSubview:uiview];
}

@end

あなたの知恵を前もってどうもありがとう!

4

2 に答える 2

1

UIViewMySplitViewController ビューの派生クラスを作成し、layoutSubviewsメソッドを実装する必要があります

于 2012-10-09T19:10:21.033 に答える
1

サブビューとして に追加する前に、self.masterViewController.viewとのフレームを設定してみてください。self.detailViewController.viewself.view

例:-

self.masterViewController.view.frame = CGRectMake(0, 0, 100, 100);
self.detailViewController.view.frame = CGRectMake(100, 100, 200, 200);

viewDidLoadまた、メソッドを直接呼び出すことは想定されていません。ビューが画面に読み込まれると、自動的に呼び出されます。

于 2012-10-09T18:32:09.683 に答える