[置顶] 经常碰到的小问题和小知识

1.TableView的一些问题

1.去除选中样式

 cell.selectionStyle =UITableViewCellSelectionStyleNone;


2.隐藏分割线

 tableView.separatorStyle = UITableViewCellSeparatorStyleNone;


3.隐藏滚动条

 self.tableView.showsVerticalScrollIndicator = NO;

4.判断当前屏幕是否包含某行cell

[self.tableView.indexPathsForVisibleRows containsObject:indexPath]


5.某一行cell即将开始展示

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath


6.某一行cell即将移出屏幕

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath




2.Scrollview的一些问题:

scrollView最侧边不能滚动

scrollView.bounces = NO;


scrollView. showsVerticalScrollIndicator  =  NO ;


3.tableView最后一行分割线不显示

- (void)layoutSubviews {

    [superlayoutSubviews];

    

    for (UIView *subviewinself.contentView.superview.subviews) {

        if ([NSStringFromClass(subview.class)hasSuffix:@"SeparatorView"]) {

            subview.hidden = NO;

        }

    }

}


4.Cell没有填充上的原因

(1).label 或imageView 没有addSubView
(2).dataArr 没有初始化
(3).tableView没有addSubView
(4).没有reloadData
(5).使用initWith方法创建的View不显示可能是由于self = [super initWithFrame:frame] 


5.覆盖按钮高亮状态

medalBtn.adjustsImageWhenHighlighted = NO; 

6.导航隐藏底部分割线

// 添加上这一句,可以去掉导航条下边的shadowImage,就可以正常显示了self.navigationController.navigationBar.shadowImage = [[UIImage allocinit];


7.自定义collectionView在initWithFrame里操作时不能使用self.rame,因为self还没return

8.AFNetworking设置超时时间要在设置请求格式之后,不然无效:
// 网络请求类

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];

    // 设置请求格式为JSON

    manager.requestSerializer = [AFJSONRequestSerializerserializer];

    // 解析格式 :不设置具体的解析格式,只需要拿到数据

    manager.responseSerializer = [AFHTTPResponseSerializerserializer];

    [manager.requestSerializerwillChangeValueForKey:@"timeoutInterval"];

    manager.requestSerializer.timeoutInterval =10.f;

    [manager.requestSerializerdidChangeValueForKey:@"timeoutInterval"];



9. 在真机测试的时候往往会突然出现这样一个错误,code signing is required for product type 'Application' in SDK 'iOS 7.0'  ,就是说代码签名证书不对劲。 

解决方案,
 

1.选择工程->Build Settings -> Code Signing -> Code Signing Identity -> Debug -> Any ios SDK 将选项改为:iPhone Developer
 

2.重新下载你的证书,或者修改通配符,或者说修改你的appid 。选择工程 -》Bundle Identifier  修改为最新的appid 。造成这种原因是因为你修改了你的app sdk版本。

10.xib中控件可视化:Editor -> Canvas ->  ShowBoundsRectangles

11.Masonry自动布局
http://www.cocoachina.com/ios/20141219/10702.html

12.当发现系统自带的属性是只读时想要替换,可以用KVC或者Runtime机制

13.显示Mac的隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true




14.用代码修改xib里的控件的frame是无效的,需要关闭Autolayout属性
如果你在xib文件里自定义cell的话,默认情况下在代码里修改控件的frame是不起作用的。因为自定义cell的Autolayout属性默认是勾选的。

在xcode右侧的inspector视图里把Autolayout属性的勾去掉就可以了



15.点击了超出父控件范围的按钮怎么办???

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

{

    BOOL inside = [super pointInside:point withEvent:event];

     

    if (!inside && self.selected)

    {

        inside = [self.calloutView pointInside:[self convertPoint:point toView:self.calloutView] withEvent:event];

    }

    

    return inside;

}


- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

{

    UIButton * btn = (UIButton *)[self.view viewWithTag:101];

    if (CGRectContainsPoint(btn.frame, point)) {

        return btn;

    }

    for (UIButton * btn in self.view.frameArr) {

        if (CGRectContainsPoint(btn.frame,point)) {

            return btn;

        }

    }

    

    return self;

}



16.关于@synthesize:
@synthesize

用@property后 会给你声明get 和 set 还有成员属性
复写了set get 你的编译器就找不到属性了 就需要你自己写下@synthesize

如果服务器给你返回的字段有OC的保留字段的话 比如description 也得@synthesize

@property (nonatomic,copy)NSString *description;

@end

@implementation BXTool


@synthesize description = _description;



















*  视图层  不能跳转,必须利用代理或block传到控制器Controller再跳转


*出现该情况 90%是由于数据库少写了传进去的参数 或者没有传入参数或传入的参数类型不对!




你可能感兴趣的:([置顶] 经常碰到的小问题和小知识)