关于UITableView的一些老是忘记的小杂碎

1:如何取消单元格的选中状态

  简简单单的一句

  [TableView deselectRowAtIndexPath:[TableView indexPathForSelectedRow] animated:YES];解决。

2:通知撤销

      通知中心不会保留(retain)监听器对象,在通知中心注册过的对象,必须在该对象释放前取消注册。否则,当相应的通知再次出现时,通知中心仍然会向该监听器发送消息。因为相应的监听器对象已经被释放了,所以可能会导致应用崩溃

//通知中心提供了相应的方法来取消注册监听器
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

//一般在监听器销毁之前取消注册(如在监听器中加入下列代码):
- (void)dealloc {
    //[super dealloc];  非ARC中需要调用此句
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

3.slider

[slider setThumbImage:[UIImage imageNamed:@"sc_sliderBtn"] forState:UIControlStateNormal];

 

自定义滑块的大小--需要重写父类的下方法:

-(CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value {

rect.origin.x=rect.origin.x-10;

rect.size.width=rect.size.width+20;
return CGRectInset([super thumbRectForBounds:bounds trackRect:rect value:value],10,10);
}

 

接下来是滑动时覆盖的图或者颜色设置:

UIImage *image = [[UIImage imageNamed:@"sc_slider"] resizableImageWithCapInsets:UIEdgeInsetsZero];//图片模式,不设置的话会被压缩

[slider setMinimumTrackImage:image forState:UIControlStateNormal];//设置图片
//[slider setMinimumTrackTintColor:[UIColor redColor]];//设置颜色

然后是未覆盖的图或颜色设置:

UIImage *image2 = [[UIImage imageNamed:@"sc_slider2"] resizableImageWithCapInsets:UIEdgeInsetsZero];//图片模式,不设置的话会被压缩

[slider setMaximumTrackImage:image2 forState:UIControlStateNormal];//设置图片

//[slider setMaximumTrackTintColor:[UIColor lightGrayColor]];//颜色设置

 

 

4.删除单元格

 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    

}

// 自定义左滑显示编辑按钮

-(NSArray<UITableViewRowAction*>*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath

{

    

    UITableViewRowAction * rowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:NSLocalizedString(@"删除", nil) handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {

        

        NSLog(@"删除第%d行",indexPath.row);

        

    }];

    

    rowAction.backgroundColor = rgb(0xf1, 0xf1, 0xf1);//改变背景色

    [[UIButton appearanceWhenContainedInInstancesOfClasses:@[[ShuSheCollectViewController class]]] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

 

    NSArray *arr = @[rowAction];

    return arr;

}

 

posted @ 2017-02-15 14:14  日月哥哥  阅读(165)  评论(0编辑  收藏  举报