3

私は UINavigationBar: AppDelegateを持つビューを持っています :

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

_homeScreen = [[PrepareScreen alloc] init];
self.mainViewController = [[MyViewController alloc] initWithScreenDef:[self.homeScreen projectHomeScreen] AndBounds:self.window.bounds];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;

そして、私はクラスを持っています

MyViewController : UIView <UITableViewDataSource,UITableViewDelegate>

そして、私の.hファイルには次のものがあります。

- (void)viewDidLoad
{
[super viewDidLoad];

self.myTableView = [[UITableView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.myTableView];
}

その後、画面の高さが間違っています。myTableView に size.height-49.0 が必要です

4

2 に答える 2

2

CGRectZeroinviewDidLoadメソッドでtableView を初期化してから、メソッドviewWillAppear:セットでself.myTableView.frame、このメソッドのようにビューのジオメトリが既に設定されており、self.view.bounds正しくなります。したがって、一般的には、 でビューを初期化しますがviewDidLoad、 でジオメトリを設定しviewWillAppear:ます。

于 2012-04-26T14:53:53.610 に答える
0

これはどうですか?

CGRect r = initWithFrame:self.view.bounds;
r.size.height -= 49.0;
self.myTableView = [[UITableView alloc] initWithFrame:r];

それが役に立てば幸い...

于 2012-04-26T14:52:12.913 に答える