• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS segue 慢 - 即使没有对destinationViewController 进行任何处理

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:17:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个连接到新 View Controller 的按钮。当我按下按钮时,在新的 View Controller 出现之前有一个可见的 3-4 秒延迟。我已经阅读了有关 stackoverflow 的其他问题,通常问题出在 destinationViewController 或 sourceViewController 上的代码(尚未完成)。就我而言,如果我在destinationViewController 上的viewDidLoad 上设置断点,则延迟甚至会在该代码执行之前发生。

另外,我的代码不会做任何应该花费超过一毫秒的事情。

这是我的destinationViewController 的代码。我在 prepareForSegue... 方法中没有任何内容,仅供引用。

如何摆脱这种延迟?谢谢!

如果您需要其他方法来诊断此问题,请随时提出,谢谢。

#import "ViewSettingsViewController.h"

@interface ViewSettingsViewController ()

@end

@implementation ViewSettingsViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    if ([HelperMethods getUserPreference"notificationTime"]==nil) {
        NSDate * now = [[NSDate alloc] init];
        NSCalendar *cal = [NSCalendar currentCalendar];
        NSDateComponents * comps = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
        [comps setHour:19];
        [comps setMinute:0];
        [comps setSecond:0];
        NSDate * date = [cal dateFromComponents:comps];
        [self.timePicker setDate:date animated:TRUE];
    } else {
        [self.timePicker setDate:[HelperMethods getUserPreference"notificationTime"]];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegueUIStoryboardSegue *)segue senderid)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

-(void) viewWillDisappearBOOL)animated {
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer
        // in the navigation stack.
        [HelperMethods setUserPreference:self.timePicker.date forKey"notificationTime"];

    }
    [super viewWillDisappear:animated];
}

@end



Best Answer-推荐答案


想通了。原来滞后时间在这一行:

[super viewDidLoad] 

从destinationViewController viewDidLoad 方法调用。那是重新加载每次启动 segue 的 View ,这是一种繁重的方法。我评论了那条线并解决了这个问题。不知道为什么我每次都想重新加载 super View ...

关于iOS segue 慢 - 即使没有对destinationViewController 进行任何处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419849/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap