说明:记录下学习IOS的一些琐碎,有些在现在看起来很简单幼稚,不过权当学习足迹吧!
1.如何删除UIScrollView下的所有子视图?
对于一般的UIView,可以用
for (UIView *view in myView) { [view removeFromSuperview]; }
但对于UIScrollView,会有警告
Collection expression type 'UIScrollView *' may not respond to 'countByEnumeratingWithState:objects:count:'
此时需要用另一种方法
UIScrollView *myScrollView = [[UIScrollView alloc]init]; if (myScrollView.subviews.count) { [myScrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; }
简单粗暴。并且该方法适用于所有的UIView
2.iphone点击return如何隐藏键盘?
首先,得实现UITextField的代理
在.h中
@interface ZMLoginViewController : UIViewController<UITextFieldDelegate>
在.m中
- (void)viewDidLoad { [super viewDidLoad]; //将textField的代理设为controller self.accountField.delegate = self; self.pwdField.delegate = self; }
实现下述方法即可
-(BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES; }
3.UIViewController有title的属性,可以设置标题。但前提是要先设置了UINavigationController,title才有意义。
如在AppDelegate中设置
SlideToSwitchController *myController2 = [[SlideToSwitchController alloc]init]; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:myController2]; self.window.rootViewController = nav;
然后在SlideToSwitchController的.m中
self.title = @"切换视图";
才会显示标题。如图:
4.使用aftnetworking从后台获取json时,有时会出现直接跳到failure的情况,这时可能的原因有后台的json格式不准确,所以就不能执行,这是花了一下午的教训。接受的数据类型还得跟后台多沟通,有时需多加几种。如:
requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", @"text/html", nil]; //@"text/plain"和@"text/html"的区别在于plain是文本形式,html为网页形式
5.当UItableView只有1个section,而数据源dataSource又有多种时,可以考虑如下处理:
既然不同数据源的数据可以放到同一tableview展示,说明其格式相同,这时可以再定义一个新的统一的model,相当于把不同数据源的model格式化,然后就可以处理。
该方法是目前所能想到的最简单方法。
6.自定义cell,里边有button,label等时,点击button获取cell所在的位置(位于tableview的哪个section,哪一列),可以用这个
NSIndexPath *indexPath = [(UITableView *)self.superview.superview indexPathForCell:self]; //self指UITableViewCell
7.textfield用代码定义时,默认是没有边框的,若想有边框,还需再加
self.accountField.borderStyle = UITextBorderStyleRoundedRect;