大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

近几来支出难题总计,重返到内定的视图

来源:http://www.dfwstonefabricators.com 作者:编程应用 人气:82 发布时间:2019-09-19
摘要:举个栗子:我们在开发中,有时会遇到这样的情况,有A、B、C三个视图控制器,A中有一个按钮,点击按钮push到B控制器,B中有个按钮,点击push到C控制器,如果点击C左上角系统自带的返

举个栗子:我们在开发中,有时会遇到这样的情况,有A、B、C三个视图控制器,A中有一个按钮,点击按钮push到B控制器,B中有个按钮,点击push到C控制器,如果点击C左上角系统自带的返回按钮,会默认的执行下面的代码:

ios实用开发技巧:

- (nullable UIViewController *)popViewControllerAnimated:animated;

1.控制器之间的灵活跳转:如果有A,B,C,D四个控制器,想要在A push B ,B 在 push 到 D,然后从D pop 到 C,在从C pop 到 A 的解决方案:

返回到上一个页面B,当然我们可以通过自定义左上角的返回按钮,通过系统的方法:

思想:先Apush到B,再B push 到D,此时navigationcontroller的viewControllers中有[A,B,D],若想从D pop 到C,首先得这个数组里面有C这个控制器,可以考虑改变这个数组,但该数组系统默认的是不可变数组,我们可以创建一个可变数组tempArr,然后重点来了,就是利用一个方法 [self.navigationController setViewControllers:tempArr animated:YES]; 重新设置导航控制器的控制器数组.至于可变数组的操作,这里就省略了.

- (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:animated; 

2.解决不合法的网络请求地址,当URL中包含了ASCII 字符集,汉字时,使用时必须要进行转义:

返回到我们指定的视图控制器,但是此时会有一个问题,如果自定义了返回按钮,可以返回到指定的页面,但是如果通过右划的手势,此时页面返回的还是上一级页面,当然我们也可以通过给视图重新添加手势,在右划的时候,也返回到指定的页面,但是我觉得这样就有点儿工作量了;

NSString * urlString = [kWebsite stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

我的思路是这样的,在B push到C页面之后,在C页面中,把B从视图控制器中删除,此时的控制器中只有A和C了,点击C上面的返回按钮,返回的就是A页面;(哎,哎,别打...)代码如下,这是在C页面中的代码:

3.SVN 忽略文件:

- viewDidLoad { [super viewDidLoad]; //得到当前视图控制器中的所有控制器 NSMutableArray *array = [self.navigationController.viewControllers mutableCopy]; //把B从里面删除 [array removeObjectAtIndex:1]; //把删除后的控制器数组再次赋值 [self.navigationController setViewControllers:[array copy] animated:YES];}

svn默认是忽略.a文件的,那如何在mac上传.a文件呢?

当然,如果有4个视图控制器的话A/B/C/D,如果想用从D返回到到A,可以把B和C从里面删除了,具体思路根据具体业务分析;

这个方法是通过修改svn配置文件,在终端输入:

如果你想获取点击系统的返回按钮的事件,有一个别人写好的方法可供参考,用的时候只需要在需要的viewController中实现一下协议中的方法就可以了:github地址:)

open ~/.subversion/config

- navigationShouldPopOnBackButton;

在配置文件中查找[auto-props],在[auto-props]上面添加:

这个第三方也有不足的地方,就是如果通过手势右滑,就获取不到pop的方法了,如果你还想把手势这个方法也给搞定,请移驾下面的地址,这个是我对上面的进行更改并添加了手势:

global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store

图片 1返回事件

4.如何修改MJRefresh的下拉刷新控件的位置.

Demo的GitHub地址

[header setIgnoredScrollViewContentInsetTop:-50];

参考文章:

5.加载webView时内存消耗过多

(喜欢就支持一下啊,你的赞美就是我最大的动力~哈哈)

6.带进度条的webview控件 :支持cocoaPods

demo下载地址:

文档说明:

7.cocoaPods常见问题解决:

8.tabBarController的第三方, 方便增加加号按钮:CYLTabBarController

9.正式版状态下对NSLOG信息的屏蔽功能

a.在PCH文件中增加如下代码

#ifdef DEBUG

#define NSLog(...) NSLog(__VA_ARGS__)

#define debugMethod() NSLog(@"%s", __func__)

#else

#define NSLog(...)

#define debugMethod()

#endif

b.在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

c. 设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme

设置Build Configuration成Debug时,就可以打印nslog了。

设置Release,发布app版本的时候就不会打印了,提高了性能

10.AFN3.0 进行图片上传 

11.https:获取cer证书

终端输入如下命令:

openssl s_client -connect www.baidu.com:443 /dev/null | openssl x509 -outform DER > https.cer

openssl s_client -connect kyfw.12306.cn:443 /dev/null | openssl x509 -outform DER > https.cer

12.自定义返回按钮会造成返回手势不能使用,解决方法

///处理自定义返回按钮后不能侧滑

@interface RootNavigationController : UINavigationController

@end

@implementation RootNavigationController

- (void)viewDidLoad {

[super viewDidLoad];

self.interactivePopGestureRecognizer.delegate = self;

}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {

if (self.childViewControllers.count == 1) { return NO; } return YES;

}

13.在xib中,在button的菜单栏中取消 Hilighted Adjusts Image选项,能够 取消按钮被长按变灰的效果

14.自定义view,如果重写了 initWithFrame,而在这个方法里面调用的是传入的frame,那么外面初始化的时候必须给定frame,否则可能出现意料不到的状况.

15.重写导航控制器的 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated  可以拦截push操作,然后就可以在push的时候做一些我们自己想做的事情

16.如何自定义导航控制器,实现可以定制每个页面的导航栏, 包括设置导航条的透明度、颜色、以及渐变色。并且支持全屏右滑返回手势

17.iOS scrollView 如何约束实现 固定宽度 动态高度? 

18.如何获取tableView中内容的高度,可以给tableView添加一个tableFooterView,然后获取tableFooterView 的y值即可

  1. webview加载html的标签内容 

20.在html文件中图片的位置,记住千万不要设置成绝对路径。直接src="xxxx.png"就OK了,图片格式无所谓。在html中,引用图片要写成src="image01.png"这样,类似src="1%E6%A0%B8%E6%AD%A6%E5%99%A8_files/image001.png"这样是不行的,而且你要把html文件放在项目里。但是直接给网络地址是可以的.

21.iOS报错[__NSCFNumber length]: unrecognized selector sent to instance出现这种报错很大的原因是因为类型给错了,或许你这个数据是从json上解析后得到的,但是需要看一下这个数据是NSString还是NSNumber类型,如果是NSNumber类型的话,你又直接使用NSString类型的变量去接收他,那么肯定会报这样的错误,所以一定要注意数据的类型

22.当需要使用popToRootViewController跳转到首页时,有时会发现跳到的tabBarController的selectedViewController并不是第一个控制器,而是其他的,这个时候可以在方法前先设置self.tabBarController.selectedIndex

0;这样就可以跳转到首页了,但是会发现tabBar被隐藏了,此时有个很巧妙的办法就是追溯到上一步,就是从 主控制器(带tabBar页面的控制器),push的时候,push之前先设置shopCarVC.hidesBottomBarWhenPushed = YES;push的代码之后在设置shopCarVC.hidesBottomBarWhenPushed = NO;这样就可以解决tabBar消失的问题了.

23.错误:Assertion failure in -[MASViewConstraint install]        -----控件没有添加到视图就是用masonry了

24 :底部视图直接用frame设置的情况下,在手机开启热点后,底部视图会往下偏一点,解决办法是将底部视图改为约束设置

  1. error: linker command failed with exit code 1

原因:新建的控制器的名字和原有的控制器重名

还有以下两种情况可能会导致这种错误的发生:

一:项目中重复导入了某些文件.,这个一般在导入三方库时可能会重复导入.

解决办法:只需要在文件目录中查找到重复导入的文件,删掉即可,或者将整个三方库删除掉,重新导入,或者用cocopods导入.

二:在项目的某些地方需要#import"XXXX.h"而#import"XXXX.m".

26.CUICatalog: Invalid asset name supplied: (null)

UIImage imageNamed..后面的图片资源已经被删除了

本文由大发体育娱乐在线发布于编程应用,转载请注明出处:近几来支出难题总计,重返到内定的视图

关键词:

上一篇:没有了

下一篇:没有了

最火资讯