ios 取得当前界面方法

iOS小技能: 获取当前正在显示的控制器 前言 知识点: 程序进入前台:applicationDidBecomeActive 导航栏正在显示的子控制器:nav.visibleViewController TabVC 选中的控制器:selectedViewController code 程序进入前台:applicationDidBecomeActive #pragma mark - 程序进入前台 切换应用至当前应用的收款信息界面,主... 阅读详情
在项目中遇到了一个问题,就是项目的需求是在用户退到后台的时候再次进入软件要出现一个手势密码的界面,开始我是这样写的:
  _openLockView = [[OpenLockViewController alloc] init];
        UINavigationController *openNav = [[UINavigationController alloc] initWithRootViewController:_openLockView];
        [self.window.rootViewController presentViewController:openNav animated:YES completion:nil];
这种想法就是用户退到后台的时候会调用APPDelegate中的-(void)applicationDidEnterBackground:(UIApplication *)application ,将上述的代码写到这个方法里,就能保证退到后台出现手势密码,但是问题也来了,对于push进来的页面都是没有问题的,界面时present进来的就会出现问题,退出时就不能保证出现手势密码。这个怎么解决呢?我们可以在退到后台的时候找到最上面的界面是什么界面,然后将手势密码界面present进来就能够解决了,这个最关键的就是找到最上面的界面:
- (UIViewController *)currentViewController{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    UIViewController *vc = window.rootViewController;
    while (1) {
        if ([vc isKindOfClass:[UITabBarController class]]) {
            vc = ((UITabBarController *)vc).selectedViewController;
        }
        
        if ([vc isKindOfClass:[UINavigationController class]]) {
            vc = ((UINavigationController *)vc).visibleViewController;
        }
        
        if (vc.presentedViewController) {
            vc = vc.presentedViewController;
        }else{
            break;
        }
    }
    
    return vc;
}
通过这样的方法,我们就可以得到最上面的界面,无论在什么情况下退到后台都能得到,将手势界面present进去。
iOS开发:在界面之间跳转的时候,返回到指定界面的方法(界面跳转到新界面之后,返回到指定界面) 在界面之间跳转的时候,返回到指定界面的方法,这是一个非常实用的方法,也符合了很多种情况需求,个人感觉很棒。 先举一个简单的例子说明一下,比如你从A界面跳转到B界面,然后再返回的时候,你不想从B界面跳转返回到A界面,你想让它返回到C界面或者D界面等等,那么就可以用到这个返回到指定界面的方法来实现。 具体步骤如下: 1.首先在需要返回界面的控制器里面导入你需要返回的界面的头文件; 2.在返回方... 阅读详情

相关推荐

【技术解析】Point-NeRF:如何通过点云优化加速神经辐射场渲染

本文深入解析了Point-NeRF技术,它通过引入3D点云作为几何先验,有效解决了传统神经辐射场渲染速度慢的痛点。该方法利用神经点云构建局部辐射场,结合点剪枝与生长策略进行动态优化,在保证高渲染质量的同时,实现了高达30倍的训练加速,为高效3D场景重建提供了新范式。

weixin_29159127的博客 266

iOS 获取当前展示的页面

-(UIViewController*)getCurrentVC { UIViewController*result=nil; UIWindow*window=[[UIApplicationsharedApplication]keyWindow]; if(window.windowLevel!=UIWi...

weixin_30501857的博客 308

密码学:一文读懂数字证书

消息摘要算法用于验证数据完整性服务,对称加密算法和非对称加密算法用于保证数据保密性服务,数字签名算法用于抗否认性服务。数字证书集合了多种密码学算法:自身带有公钥信息,可完成相应的加密/解密操作;同时,还带有数字签名,可鉴别消息来源;且自身带有消息摘要信息,可验证证书的完整性;由于证书本身含有用户身份信息,因而具有认证性。

Shujie 2907

iOS获取当前显示页面

UINavigationController 中有visibleViewController和topViewController visibleViewController 当前显示的控制器 topViewController 是某个导航栈的栈顶视图 visibleViewController跟导航栈没有关系,只是当前显示的控制器,也就是说任意一个导航的visibleViewController所返回的值应该是一样的, topViewController 是某个导航栈的栈顶视图,和导航控制器相关 换句话说.

kiss20的专栏 683

[QT笔记]QTableView与QTableWidget表头设置实战对比

本文深入对比了QT开发中QTableView与QTableWidget在表头设置上的核心差异与实践方法。QTableWidget提供开箱即用的便捷API,适合快速开发;而QTableView遵循模型-视图架构,表头数据由模型管理,虽设置稍复杂但灵活性与扩展性更强。文章通过实战代码示例,详细解析了两种组件的适用场景、性能考量及常见避坑指南,帮助开发者根据项目需求做出高效选择。

weixin_29018335的博客 322

SpringBoot 自定义注解来实现动态切换数据源

/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。

晴天飛 雪的博客 1836

iOS部分小技巧 持续更新中

可以在viewWillDisappear中判断下一个页面是pop、push还是present的 画圆的三种方式 获取当前控制器 消除警告 UIButton中的TitleEdgeInsets使用 定位后的反编译和地区中文首字母缩写 更改 UINavigationBar 的返回键文字(同时保留右滑返回) NSDictionary/NSArray 转 JSON字符串 KeyChain 保存密码 退出到最外

龙游浅溪 715

华为OD机试双机位C卷-简单的解压缩算法(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【简单的解压缩算法】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD真题【简单的解压缩算法】。

qq_45776114的博客 474

iOS 获取触摸,移动手势

苹果中有很多手势,之前项目中有个需求: 1.在图片区域内获取颜色值; 2.在图片区域内随着手点击和拖动选取的颜色改变; 3.取得颜色值发送给蓝牙模块; 在这里我只写了个关于手势的demo。 思路是这样,1.要获取点击中心的x,y 2.手拖动时候中心点的x,y。1.先给手指点击的图片 imageV=[[UIImageView alloc]init]; imageV.frame=

NS_DavidLee的专栏 2228

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1728

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1570

OC获取当前的UIViewController或者RootViewController

OC获取当前的UIViewController或者RootViewController

weixin_46926959的博客 3337

Android系统修改驱动固定USB摄像头节点绑定前后置摄像头

Android系统中usb摄像头节点会因为摄像头所接的usb口不同或者usb设备识别顺序不一样而出现每次开机生成的video节点不一样的问题。由于客户app调用摄像头时,需要固定摄像头的节点。因此需要针对前面的情况做处理。

Android系统开发笔记 2250

[iOS]获取当前界面上显示的键盘UIKeyboard方法

正常情况下我们对iOS系统键盘的使用仅限于让其显示或者隐藏,不会有需要获取到它的对象,仅当有一种情况,即是当我们需要在界面上添加一些元素,并且希望这些元素能够不被键盘挡住。这种情况下我们需要找到当前键盘所在的Window,并将元素添加到这个Window上,如此一来,我们先要找到键盘的实例对象,它是UIView的子类对象,我们只需要调用其window方法就能找到包含了键盘的UIWindow对象,就可

xy5811的专栏 4642

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iOS 友盟推送三种状态(app在当前界面,app在后台,app未启动)时调用方法

当app未启动时,点击推送消息,进入app会调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { }此方法 当app在后台运行时或者用户正在app当前界面时会调用 - (void)applicati

刘俊杰的博客 4891

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS引用当前显示的UIAlertView

UIAlertView在iOS里和一般的UIView不一样,有时候使用起来会有一些不便。特别要引用当前显示的UIAlertView的时候,就存在一些难度。 在iOS7以前,可以下面的代码可以解决这个问题 #pragma mark 查找当前界面有没有一个AlertView +(BOOL)isAlert{ for (UIWindow* window in [UIApplication...

diaojiongya7216的博客 147

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ios 点击跳回主界面方法

ios 点击跳回主界面方法,直接用下面这句就可以了: [self.navigationController popToRootViewControllerAnimated:YES];

dhy270498872的专栏 984

iOS 如何跳转到登录界面

iOS 如何跳转到登录界面

sp_wei的博客 2079

iOS用户点击退出按钮,跳到登录界面的代码控制

iOS用户点击退出按钮,跳到登录界面的代码控制 每个程序都有自己的退出功能,一般是点击退出按钮之后程序跳到登录界面,但是单纯的调用方法    self.navigationController pushViewController:(UIViewController *) animated:(BOOL)只能是把登陆界面压栈,前面的界面还在。所以正确的办法肯定是退回到最初开始登陆时的状态

liufangbaishi2014的博客 1万+

ios开发之确定设备当前的方向

有时候我们需要判断应用程序当前的方向,可以通过获取设备当前的方向来确定,从下面的定义你可以看到UIInterfaceOrientation的定义是通过UIDeviceOrientation来完成的,有两个概念: UIDeviceOrientation:硬件设备的方向 UIInterfaceOrientation:应用程序界面的方向 UIDeviceOrientation的定义如下:

CaryaLiu的专栏 9027

IOS界面推界面如何回到root界面

IOS界面推界面如何回到root界面

鱼儿的博客 851

iOS 获取当前正在显示的ViewController

//获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWindow * window = [[UIApplication sharedApplication] keyWindow]; ...

weixin_30737433的博客 110

iOS获取当前设备方向

三种方式: self.interfaceOrientation [[UIApplication sharedApplication] statusBarOrientation] [[UIDevice currentDevice] orientation] 但是实际使用时有区别的: self.interfaceOrientationreturns UIInterfaceOrien...

weixin_34388207的博客 130

【IOS 开发学习总结-OC-61】IOS 的自动旋转

【IOS 开发学习总结-OC-61】IOS 的自动旋转很多的应用都支持横屏和竖屏2种运行模式。模式切换时会自动调整界面,以保证在2种模式下应用都运行良好。——这就是自动旋转机制。当然这2种方式,根据需要来进行实现。 在竖屏旋转到横屏后,状态栏会占用显示的高度20px。通常可以隐藏状态栏。——在应用程序委托类的- (BOOL)application:(UIApplication *)applica

Albert的专栏 2255

iOS界面之间的跳转方式

iOS界面之间的跳转方式基本有3种。 1、改变window的根视图 [self.window setRootViewController:VC]; 2、模态弹出 [self presentViewController:nextVC animated:YES completion:nil];//从当前界面到nextVC [self dismissViewContr...

weixin_34223655的博客 117
上一篇: swift 可选链式调用
下一篇: swift 类型转换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值