7

ユーザーがデータを入力して解析して保存できるように、既に作成した UITableView を提示しようとしています。私はナビゲーションビューを提示していないと確信しています。

ログインすると、次のエラーが表示されます。

Checklists[4516:c07] Warning: Attempt to present <ChecklistsViewController: 0x10525e90> 
on <UINavigationController: 0x9648270> while a presentation is in progress!

ご協力いただきありがとうございます。

#import "LoginViewController.h"
#import "ChecklistsViewController.h"
#import "SetupViewController.h"
#import <Parse/Parse.h>

@interface LoginViewController ()

@end

@implementation LoginViewController

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

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

    PFLogInViewController *login = [[PFLogInViewController alloc] init];
    login.fields = PFLogInFieldsFacebook;
    // Need to set the delegate to be this controller.
    login.delegate = self;
    login.signUpController.delegate = self; //signUpController is a property on the login view controller
    [self presentModalViewController:login animated:NO];

}

    - (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user
{
    [self dismissModalViewControllerAnimated:YES];
    NSLog(@"Successfully logged in.");
    ChecklistsViewController *controller = [[ChecklistsViewController alloc] initWithStyle:UITableViewStylePlain];
    controller.modalTransitionStyle = UITableViewStylePlain;
    [self presentModalViewController:controller animated:YES];

}
4

1 に答える 1

34

このメソッドはしばらくの間非推奨になりました

     presentModalViewController:animated:

代わりにこれを使用する必要があります

    presentViewController:animated:completion:

これも同じです

    dismissModalViewControllerAnimated:

今これを使用します

    dismissViewControllerAnimated:completion:

完了ブロックが必要ない場合は、nilに設定するだけです。

しかし、あなたの場合、完了ブロックで問題を解決できます...これにより、イベントの正しいシーケンスが保証されます。つまり、却下が完了するまで提示は行われません。

    - (void)logInViewController:(PFLogInViewController *)logInController 
                   didLogInUser:(PFUser *)user
{
    [self dismissViewControllerAnimated:YES completion:^{
        NSLog(@"Successfully logged in.");
        ChecklistsViewController *controller = 
              [[ChecklistsViewController alloc] initWithStyle:UITableViewStylePlain];
        controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        [self presentViewController:controller animated:YES completion:nil];
    }];

}

[注-元のコードではmodalTransitionStyleが正しくありませんでしたが、これも変更しました。これを指摘してくれたダニエルGに感謝します]

于 2013-02-20T03:07:43.177 に答える