页面管理

简介: 页面管理

页面管理决定一个app的质量。没有中央页面管理组件,轻者造成实现页面处理麻烦,每个应用都要实现自己自己的页面管理,不利于实现页面状态机;重者容易产生页面页面循环引用,不能及时释放,通知事件没有正常移除造成崩溃。

正确的中央页面管理组件,要达到像这样的效果,调用一个url地址就能实现页面跳转和实现页面跳转时的动画。怎么实现实时移除上个页面呢?就是进入另一个新页面,发送通知,上一个页面接到通知从UINavigationController移除该页面。在页面销毁函数中,增加像下面的代码一样移除通知:

- (void)dealloc
{
    _mapView.delegate = nil;
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    NSLog(@"dealloc");
}

在arc机制下,一旦你使用了定时器,就是你离开页面是把定时器指针置为空,你的页面也不能实时销毁。完美解决方案是使用NSTimer+YYAdd这个库来实现定时器的调用。示例代码:

        if (!(_timer.isValid)) {
            @weakify(self);
            self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f block:^(NSTimer * _Nonnull timer) {
                @strongify(self);
                [self readmis];
            } repeats:YES];
            [self.timer setFireDate:[NSDate distantPast]];

        }
        else
        {
            [_timer setFireDate:[NSDate distantPast]];
        }
//读秒
-(void)readmis
{
    if(self.sendVerificationCodeWaitTime > 0)
    {
        self.sendVerificationCodeWaitTime--;
    }

    if (self.sendVerificationCodeWaitTime == 0)
    {
        self.repeatBtn.enabled=YES;
        [self.repeatBtn setTitleColor:[UIColor colorWithHexString:@"0X0F9B70"] forState:UIControlStateNormal];
        [self.repeatBtn setTitle:@"请重新发送" forState:UIControlStateNormal];
        self.repeatBtn.userInteractionEnabled = YES;
        [self.timer setFireDate:[NSDate distantFuture]];
    }
    else
    {
        [self.repeatBtn setTitleColor:[UIColor colorWithHexString:@"0X8A9399"] forState:UIControlStateNormal];
        NSString*timeStr=[NSString stringWithFormat:@"%lu秒后重试",(unsigned long)self.sendVerificationCodeWaitTime];
        self.repeatBtn.enabled=NO;
        //    这样设置不会闪烁
        self.repeatBtn.titleLabel.text= timeStr;
        [self.repeatBtn setTitle:timeStr forState:UIControlStateDisabled];
        self.repeatBtn.userInteractionEnabled = NO;
    }
    self.repeatBtn.titleLabel.textAlignment = NSTextAlignmentRight;
    self.repeatBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
}

我们使用是自己做的页面跳转组件,页面跳转的示例代码如下:

            [YXRouter openURL:@"gb://test" completion:^(id result) {
                [[NSNotificationCenter defaultCenter] postNotificationName:orderPrepareEvalute object:nil];
            }];

再具体的不便于近一步说了,那涉及公司技术秘密了。

做程序猿的就要有day day up的觉悟,不进则退。

现在比较时髦的技术是mmvvm与ReactiveCocoa,布局第三方库(如:SDAutoLayout。苹果自带的布局库操作太不方便了,特别是storyboard想动态修改它太不方便了,并且会严重增大app),混合开发(React Native等),指定范围或特定人群试用新功能,埋点,热修复,页面下发管理中心,无线网关(应用启动建立https的ssl隧道,需要证书认证,并保存会话信息到内存中。当认证成功后,ssl隧道断开(,再发送https请求都携带会话信息,当网关收到这样的https请求并且核对会话信息正确,不再进行证书认证直接建立通道),聚合层(多个不相关接口合并成一个接口),懒加载,无线配置中心(服务器下发配置中心数据更新消息,客户端解析消息,根据解析的消息结果来决定是否向服务器下载数据),模块化(私有库),git工作流,jenkins自动打包上传,混合编程(objec c和c ++混合编程,如:通用长连接库用c++写,安卓和苹果客户端都能调用),swift。


目录
相关文章
|
6月前
|
Java 应用服务中间件 数据库
Servlet实现注册登录列表页面及其相互跳转功能
Servlet实现注册登录列表页面及其相互跳转功能
76 1
|
6月前
|
BI
宜搭流程表单报表的表格内如何设置点击跳转到表单的详情页面
宜搭流程表单报表的表格内如何设置点击跳转到表单的详情页面
749 0
|
7天前
|
搜索推荐 数据安全/隐私保护 UED
管理后台403页面的优雅实现策略
在管理后台的开发中,403页面是一个不可忽视的存在。它不仅关系到用户体验,还涉及到系统的安全性和专业性。一个优雅实现的403页面,能够在用户无权访问某个资源时提供清晰的反馈,同时保持管理后台的整洁和一致性。以下是几个关键步骤和技术分享,帮助你实现一个既优雅又有效的403页面。
16 2
|
1月前
|
数据采集 搜索推荐 UED
什么是404页面
404页面,也被称为“未找到页面”,是当用户尝试访问一个不存在的网页时,服务器返回的一个错误页面。这个页面告诉用户他们请求的页面不存在或无法找到,通常是因为输入了错误的链接或请求的页面已被删除或移动
|
6月前
|
监控 小程序 开发者
【小程序质量提优解决方案】(一)页面不存在
【小程序质量提优解决方案】(一)页面不存在
166 11
|
前端开发 搜索推荐 JavaScript
实现用户登录注册的主页面
实现用户登录注册的主页面
73 0
|
搜索推荐 UED 索引
单页面是什么呢?单页面怎么优化
单页面是什么 单页面就是一种布局很简单的静态页面,在互联网早期,大多数网站都是以单页面的形式存在的。但是那时候大多数站长对单页面网站的重视度不够,且很少有人去专门做单页网站。 基本都是做一个多页的网站,整体性的来做SEO,用整体性的网站提升单页面权重和PR值,以实现推广目的。后来随着互联网的发展,单页网站逐渐消失在人们的视野中。 然而,单页面的网站有时候也能达到多页面的网站所达不到的效果,比如说利于集中权重、利于增加网站相关性、更容易被抓取,随着最近淘宝客等形式的净收益的出现,单页面以其简单的氛围优势,再次出现在人们的眼中。
211 0
「服务范围」页面
5招教你打造有超强吸引力的「服务范围」页面
276 0