iOS开发中的小问题,不断更新

1.从视图A中navigation controller push到视图B,当视图B navigationcontroller pop回到视图A时,并不会调用A的viewDidLoad,但是会调用viewWillAppear,所以如果视图A有需要变更的内容应该在viewWillAppear中实现,所以数据的获取和变动可以写在viewWillAppear函数中。


2.tableview中的数据为空的时候,如果显示空白不好看,最好加一些提示,比如说提示tableview的数据为空,及时添加数据,其实是设置tableview的headerview,方法如下,方法来自stackoverflow:

先判断datasource是否为空,如果为空

    UIView *emptyView = [[UIView alloc] initWithFrame:self.tableView.frame];
    /* Customize your view here or load it from a NIB */
    self.tableView.tableHeaderView = emptyView;
    self.tableView.userInteractionEnabled = NO;

不为空的时候

   self.tableView.tableHeaderView = nil;
   self.tableView.userInteractionEnabled = YES;

如果想用storyboard来设计header view,参照下面:

http://blog.csdn.net/sqc3375177/article/details/16820833


3.tableview 取消多余的分割线

self.tableView.tableFooterView = [[UIView alloc]init]; 


4.tableview中通过cell上的按钮来获取按钮所在的cell

参照如下的思路,具体还是看自己的controller布局,看看自己的按钮是第几层,cell是第几层。

http://blog.it985.com/3400.html


5.使用coredata进行数据存储,以下地址的demo非常好

http://www.cocoachina.com/bbs/read.php?tid=297371


6.网络交互的时候,使用AFNetworking会出现的问题


<span style="font-size:14px;">2014-11-15 15:13:29.719 myapp-ios[42377:70b] Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo=0xb61e130 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0xb3071b0> { URL: http://api-myapp.com/register } { status code: 400, headers {
    "Accept-Ranges" = none;
    Connection = close;
    "Content-Length" = 206;
    "Content-Type" = "text/html";
    Date = "Sat, 15 Nov 2014 23:13:29 GMT";
    Server = "WildFly/8";
    "X-Powered-By" = "Undertow/1";
} }, NSErrorFailingURLKey=http://api-myapp.com/register, NSLocalizedDescription=Request failed: bad request (400), com.alamofire.serialization.response.error.data=<636f6d2e 66617374 6572786d 6c2e6a61 636b736f 6e2e636f 72652e4a 736f6e50 61727365 45786365 7074696f 6e3a2055 6e726563 6f676e69 7a656420 746f6b65 6e202765 6d61696c 273a2077 61732065 78706563 74696e67 20282774 72756527 2c202766 616c7365 27206f72 20276e75 6c6c2729 0a206174 205b536f 75726365 3a20696f 2e756e64 6572746f 772e7365 72766c65 742e7370 65632e53 6572766c 6574496e 70757453 74726561 6d496d70 6c403132 66336263 613b206c 696e653a 20312c20 636f6c75 6d6e3a20 375d>, NSUnderlyingError=0xb60f160 "Request failed: unacceptable content-type: text/html"}</span>

解决方法:

manager.requestSerializer = [AFJSONRequestSerializer serializer];


如果还有如下问题:

AFNetworking ''Request failed:unacceptable content-type :text/html"

解决方法如下:

全工程搜索AFURLResponseSerialization.m文件

修改223行:

self.acceptableContentTypes = [NSSetsetWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript", nil];

加上蓝色部分,其实就是添加一种服务器返回的数据格式。


7.UITextView以及UITextField限制输入字数的问题,完美解决中英文等,非常好的一篇文章

http://blog.csdn.net/fengsh998/article/details/45421107


8.UITableView Cell的高度根据文本的多少来自动调整

http://www.imooc.com/wenda/detail/245446


9.给图片设置点击事件

 UITapGestureRecognizer *tap_back = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backImageAction)];
    [self.backImage addGestureRecognizer:tap_back];
    //添加这一句,图片才能相应点击
    self.backImage.userInteractionEnabled = YES;

设置相应代码:

- (void) backImageAction{
}


10.给数组中的字典排序

NSArray *sortedArray = [NSArray array];
sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
       //类型要与键对应的值的类型一致
        NSNumber index1 = [obj1 valueForKey:@"index"];
        NSNumber index2 = [obj2 valueForKey:@"index"];
        return [index1 compare:index2];
    }];


11.使用CocoaPods导入的框架找不到头文件的解决方法

下面网址的解决方法亲测好用

http://blog.sina.com.cn/s/blog_864456e50101eyic.html


12.tableview中通过indexPath来获取对应的cell

NSUInteger section = 0;
NSUInteger row = 1;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

13.下拉刷新和上拉加载更多,通过第三方库MJRresh,非常好用。

https://github.com/ruzhuxiaogu/MJRefresh


14.修改APP在设备上的显示名称

在info.plist中增加Bundle display name,字典类型,后面填上要改的APP的名字即可。


15.iOS开发中输入框,包括TextField,TextView,被软键盘遮挡的解决方法:

http://blog.csdn.net/enuola/article/details/7917221

 

16.iOS开发:禁止屏幕旋转的方法如下:


在项目文件中的General中的Device Orientaion中的checkbox进行设置,portrait选上,其他的不选,就将旋转关闭了


17.UITextField,UITextView点击空白处收起键盘

方法一:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    [telTextField resignFirstResponder];

    

}


方法二:

- (void)viewDidLoad{
 //点击别处收回键盘
    self.view.userInteractionEnabled = YES;
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fingerTapped:)];
    
    [self.view addGestureRecognizer:singleTap];
}

-(void)fingerTapped:(UITapGestureRecognizer *)gestureRecognizer

{
    
    [self.view endEditing:YES];
}


个人觉得方法二比较好用。



18.UITextField点击return收起键盘


首先,添加UITextViewDelegate,self.textField.delegate = self,然后实现如下的代理方法:


- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

    [textField resignFirstResponder];

    return YES;

}

19.iOS 通过url ,网络获取图片

 -(UIImage *) getImageFromURL:(NSString *)fileURL {
NSLog(@"执行图片下载函数");
UIImage * result;
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
result = [UIImage imageWithData:data];
return result;
}


20.Base64图片与UIImage的相互转化,数据包含头: data:mimeType ; base64,base64String 格式


Base64 ->UIImage

- (UIImage *) dataURL2Image: (NSString *) imgSrc
{
    NSURL *url = [NSURL URLWithString: imgSrc];
    NSData *data = [NSData dataWithContentsOfURL: url];
    UIImage *image = [UIImage imageWithData: data];

    return image;
}


UIImage ->base64

- (BOOL) imageHasAlpha: (UIImage *) image
{
    CGImageAlphaInfo alpha = CGImageGetAlphaInfo(image.CGImage);
    return (alpha == kCGImageAlphaFirst ||
            alpha == kCGImageAlphaLast ||
            alpha == kCGImageAlphaPremultipliedFirst ||
            alpha == kCGImageAlphaPremultipliedLast);
}
- (NSString *) image2DataURL: (UIImage *) image
{
    NSData *imageData = nil;
    NSString *mimeType = nil;

    if ([self imageHasAlpha: image]) {
        imageData = UIImagePNGRepresentation(image);
        mimeType = @"image/png";
    } else {
        imageData = UIImageJPEGRepresentation(image, 1.0f);
        mimeType = @"image/jpeg";
    }

    return [NSString stringWithFormat:@"data:%@;base64,%@", mimeType,
           [imageData base64EncodedStringWithOptions: 0]];

}


继续更新......







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值