0

起動時に画面の中央にログインモーダルを表示したいのですが、背景が空白になり、モーダルが位置コードを無視します。

UITableView に基づく iOS アプリケーションがあります。ユーザーが最初にアプリを開いたときに、画面中央にモーダル ログイン ウィンドウを表示したいと考えています。メイン ビュー コントローラーの viewDidLoad で、UITableViewController で使用されるすべてのデータを設定します。次に、モーダル ウィンドウを次のように呼び出します (例として少し変更しています)。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    TenKeyPad *passwordEntry = [[[TenKeyPad alloc] initWithValues:@"" PasswordEntry:TRUE] autorelease];
    passwordEntry.delegate = self;

    passwordEntry.modalPresentationStyle = UIModalPresentationFormSheet;
    passwordEntry.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    passwordEntry.view.superview.frame = CGRectMake(0,0,320, 460); // iphone screen is 320 x 480 (-20px that would normally be the toolbar)
    passwordEntry.view.superview.center = CGPointMake(768/2, 1024/2 + 10);

    [self presentViewController:passwordEntry animated:NO completion:nil];
        
    [passwordEntry release];
} 

テーブル ビューの上にモーダル パスワード ウィンドウが表示されることを期待していましたが、代わりに、ディスプレイの左上隅に暗い灰色の背景で表示されています。ただし、後でアプリケーションでまったく同じコードを使用してこのモーダルを呼び出すと、期待どおりに動作します。tableViewの上に表示されるようにモーダルをロードする適切な方法または時間は何ですか?

スクリーンショット

故障した

ログインウィンドウの不具合

望ましい/期待される

望ましい/期待されるログイン ウィンドウ

4

1 に答える 1

1

私もこの機能に苦労しました。最初からモーダルのサイズを設定する適切な方法が見つかりませんでした。私はこのようなことを試してみます:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    LoginViewController *controller = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    controller.modalPresentationStyle = UIModalPresentationFormSheet;
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    [self presentViewController:controller animated:NO completion:^{
        // resize
        controller.view.superview.frame = CGRectMake(self.view.frame.size.width/2-160, self.view.frame.size.height/2-230, 320, 460);
    }];
}

これは必要なことを行いますが、アニメーションは正しく機能しません。

于 2012-10-11T00:07:32.830 に答える