gpt4 book ai didi

ios - performSegueWithIdentifier 在回调函数中不起作用?

转载 作者:行者123 更新时间:2023-12-01 18:21:09 26 4
gpt4 key购买 nike

 -(void)loginPerform
{
NSLog(@"start to perform segue!");
[self performSegueWithIdentifier:@"SecondPage" sender:self];
NSLog(@"end perform login!");
}

loginPerform 函数在回调函数中调用。两个日志都可以打印,因此 performSegueWithIdentifier 执行。但当前 View 不会改变。
  • View A 和 View B 由 Custom Segue 连接。
  • View A 嵌入在导航 Controller 中。

  • BTW:我放了一个测试按钮直接执行segue,它可以工作。
    当调用 loginPerform 函数时,单击测试按钮时下一个 View 始终是 View A。

    我不明白发生了什么。有人可以帮助我吗?
    int user_account_delegate(int reqid, char* msg)
    {
    NSLog(@"DEBUG: login return %s", msg);
    int reterr = 0;

    if(reqid!=[BLSInstLink getLoginID])
    return -1;

    /* parse the login result (JSON) */
    if(get_json_object_value(msg, KEY_ERROR, VAL_INTEGER, (void*)&reterr)==0)
    {
    if(reterr==0)
    {
    NSLog(@"DEBUG: login succeed.");
    [BLSInstLink setLogined:YES];
    BLSViewController *this = THIS;
    [this loginPerform];
    }
    else
    {
    NSLog(@"DEBUG: login failed. err=%d", reterr);
    [BLSInstLink setLogined:NO];
    [BLSInstLink setErrorCode:reterr];
    }
    }
    [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_LOGINRESULT object:nil];
    return 0;
    }

    这是我在自己的 UIViewController 中实现的回调函数。
    -(void)loginPerform{
    NSLog(@"in loginPerform");//1
    [self dismissViewControllerAnimated:YES completion:^() {
    NSLog(@"start perform page2");//2
    [self performSegueWithIdentifier:@"SecondPage" sender:self];
    NSLog(@"end perform page2");//3
    }];
    }

    这是回调函数中调用的执行函数。只需 1 次打印
    - (IBAction)test_click:(id)sender {
    [self performSegueWithIdentifier:@"SecondPage" sender:self];
    }

    这是一个测试按钮,用于测试执行 segue。它运作良好。

    最佳答案

    在执行 segue 之前,您需要等到其他 View Controller 完成动画。您可以使用新的 iOS 5 方法:

    [self dismissViewControllerAnimated:YES completion:^() {
    [self performSegueWithIdentifier:@"My Segue" sender:self];
    }];

    如果您需要 iOS 5 之前的方法来执行此操作,您应该在执行 segue 之前添加一个延迟以给动画时间。

    否则你可以去这里 iOS delegate not working with performSegueWithIdentifier?

    关于ios - performSegueWithIdentifier 在回调函数中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290557/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com