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 回答