UITableView UITableViewCell NSIndexPath

--------------------------------------------------------------------------NSIndexPath-------------------------------------------------------------------------

1:初始化NSIndexPath (来自: Kid)

inSection 表示TableView 的分组的 第一组数据.

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];  

2:IndexPath 对比是否相同

[easyTableView.selectedIndexPath isEqual:indexPath]  

3:通过UITableViewCell 里面的按钮事件 来获取 该按钮所在的IndexPath

1:注册事件:

    [selectButton addTarget:self action:@selector(FE_selectAnnotation:withEvent:) forControlEvents:UIControlEventTouchUpInside];  

注:@selector 可以获取 UIEvent 对象

    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint: [[[event touchesForView: btn] anyObject] locationInView:tableView]];
    NSLog(@"%d",indexPath.row);  

--------------------------------------------------------------------------NSIndexPath--------------------------------------------------------------------------


------------------------------------------------------------------------------------UITableView------------------------------------------------------------------------------------------

1:UITableView reLoadData 重载动态数据时的注意.

因为UITableView的Cell  是以重用的方式去显示数据,所以对Cell中动态数据 都需要设置. 否则可能会乱掉

2:去除选中某行Cell的状态

[tableView deselectRowAtIndexPath:indexPath animated:YES];  

3:使用静态UITableView时此委托不要实现,否则在运行时将出现警告

    -(UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
    {
        if ([indexPath row] == 0) {
            return UITableViewCellAccessoryDisclosureIndicator;
        }else {
            return UITableViewCellAccessoryNone;
        }
    }  

4:滑动删除按钮必须同时实现以下两个委托,才能生效

    -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return YES;
    }
    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
        NSLog(@"%d",indexPath.row);
    }  

5:在使用UITableView 的

tableHeaderView 时 丢进去的View需要先行设置好 Frame  不然会与后面生成Cell产生重叠的问题

6:UITableView 默认 只支持垂直 可以通过transForm 旋转达到支持水平形式的UITableView

1:网上开源Demo下载地址:

https://github.com/alekseyn/EasyTableView

从iOS6以上开始  有了UITableView的亲兄弟 UICollectionView.  它带来更加强大的布局功能.

7:提前获取UITableView 的ContentSize

[flowCalendarTableView.tableView layoutIfNeeded];
NSLog(@"%@",NSStringFromCGSize(flowCalendarTableView.tableView.contentSize)); 

8: 去掉UITabelView 默认的 Cell间隔线条

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;  

9: 下拉刷新实现原理

在UITableView 上面 addSubView 一个 -y 轴的 RefreshView 上去后,那么在拖动TableView的时候 就可以看到刚刚加上去的View

那么此时在ScrollView拖动委托中 进行判断,监听拖拽度足够的情况下触发刷新事件.

在触发事件的同时,修改 contentInset 来保证 RefreshView能够突显出来,顺应其他Cell的拖动显示.

此处记录一点,就是在包含 Section View 的时候 需要加入以下代码,才能保证正常的拖动效果,以不至于出现灵异的拖动显示效果

    CGFloat offset = MAX(scrollView.contentOffset.y * -1, 0);
    offset = MIN(offset, 60);
    scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f, 0.0f);  

注:以上代码通用,无需过多考虑其原理.

10:开启排序拖动编辑功能

    //开启排序拖动编辑功能
    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
    {
        NSLog(@"1");
    }  

11:滑动显示删除按钮时和结束按钮操作时所触发的委托,可以在这两个委托里面控制 Cell内部Frame

    - (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [UIView animateWithDuration:0.25 animations:^{
            FEUIFriendGroupCell *cell = (FEUIFriendGroupCell *)[tableView cellForRowAtIndexPath:indexPath];
            cell.friendGroupTitleTextField.Help_width -=60;
        }];
    }
    - (void)tableView:(UITableView *)tableView  didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [UIView animateWithDuration:0.25 animations:^{
            FEUIFriendGroupCell *cell = (FEUIFriendGroupCell *)[tableView cellForRowAtIndexPath:indexPath];
            cell.friendGroupTitleTextField.Help_width +=60;
        }];
    }  

注:删除按钮出来时肯定有动画,但是消失时不一定有动画,原因是看你有没有实现 这个委托 accessoryTypeForRowWithIndexPath(搜索一下)

12:让UIPanGestureRecognizer 与 UItableView 的滑动显示 删除按钮  共存

    [[tableView gestureRecognizers] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if ([NSStringFromClass([obj class]) isEqualToString:@"UISwipeGestureRecognizer"]) {
              [self.bookContentContainerView.touchPanGesture requireGestureRecognizerToFail:obj];
        }  

    }];  

13:开启UITableView多选编辑功能(iOS 5 or later):

    [multiFTPServerListTableView setAllowsMultipleSelectionDuringEditing:YES];
    [multiFTPServerListTableView setEditing:YES];  

在多选状态下,实现单选功能:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSLog(@"%@",[tableView indexPathsForSelectedRows]);
        NSArray *indexPathArray = [tableView indexPathsForSelectedRows];
        [indexPathArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if ([indexPath isEqual:obj] == NO) {
                [tableView deselectRowAtIndexPath:obj animated:NO];
            }
        }];
    }  

14:让已经选择了多个Cell以后立刻去除所有已选中的效果:

    _documentCollectionView.allowsMultipleSelection = NO;
    _documentCollectionView.allowsSelection = NO;
    _documentCollectionView.allowsSelection = YES;  

------------------------------------------------------------------------------------UITableView------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------UITableViewCell---------------------------------------------------------------------------------------

1:设置TableViewCell 的背景颜色

    UIView *backgrdView =[[UIView alloc] initWithFrame:self.frame];
    backgrdView.backgroundColor=[UIColor colorWithRed:242.0/255 green:242.0/255 blue:242.0/255 alpha:1];
    self.backgroundView= backgrdView;
    [backgrdView release];  

2:控制 自定义UITableViewCell 的 Cell 高度 不要超出显示范围的方式

例如:Cell 高度 有100 但其实只有显示 50.

第一步是设置好UITableView 没列的高度,通过以下委托

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 50;
    }  

第二步 将UITableViewCell 自身设置为 自动遮罩不可见区域

[self.layer setMasksToBounds:YES];  

3:为自定义UITableViewCell 设置  reuseIdentifier

在Cell.h 头文件添加

静态取值方法:

+ (NSString *)reuseIdentifier; 

在Cell.m体文件添加

    //因为是继承关系 所以重写Cell 的 reuseIdentifier 以确定 其值.
    -(NSString *)reuseIdentifier
    {
       return @"FEUIAddressBookCell";
    }
    //定义一个静态方法来取其值.
    +(NSString *)reuseIdentifier
    {
       return @"FEUIAddressBookCell";
    }  

UITableView 调用时如下:

    NSString *SectionsTableIdentifier = [FEUIAddressBookCell reuseIdentifier];
    FEUIAddressBookCell *addressBookCell = (FEUIAddressBookCell *)[tableView dequeueReusableCellWithIdentifier:SectionsTableIdentifier];
    if(addressBookCell == nil)
    {
       NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FEUIAddressBookCell" owner:self options:nil];
       addressBookCell = (FEUIAddressBookCell *)[nib objectAtIndex:0];
    }  

通过如上,性能问题已经解决.继续施展拳脚吧!!!

4:UITableView 在Grouped 模式下. 修改Cell 背景颜色的方式

cell.backgroundColor = [UIColor whiteColor];  

5:不要在Cell内部的任何控件 使用 setMasksToBounds, 否则拖动动画不流畅

6:设置Cell系统高亮选择样式风格

cell.selectionStyle = UITableViewCellSelectionStyleNone;  

注:上面表示取消了.系统默认的高亮选择效果.

---------------------------------------------------------------------------------UITableViewCell---------------------------------------------------------------------------------------

时间: 2024-10-02 06:16:55

UITableView UITableViewCell NSIndexPath的相关文章

UITableView UITableViewCell

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 自定义UITableViewcell的方法 1.创建cell时,不从重用池找,进来就创建 NSString *identifier = [NSString stringWithFormat:@"cell"]; // 设置cell 标识 UITable

UITableView总结

http://my.oschina.net/iq19900204/blog/292125 摘要 UITableView uitableview uitableviewcell 目录[-] 1.协议介绍 UITableViewDataSource(11) UITableViewDelegate(常用) 2.刷新 下拉刷新: 上拉刷新 3.搜索 4.重用 自定义cell 不使用重用方法 注册Cell 5.编辑 滑动更多 6.优化 UITableView 总结 UITableView是UIScroll

iOS UITableView的使用大全-备用

首先.对UITableView进行讲解,下面有对它进行实际的应用 UITableView 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍存在于iPhone的应用程序中 TableView Styles UITableView有两个默认的内置风格,第一个是UITableViewStylePlain(简明风格,简明风格表明表格视图自身没有真正地在你自己实际地提供任何外观之前提供很多的外观,大部分情况下,它会做的唯一的事情是它会给你这些header和foote

(转载)UITableView的详细讲解

NSIndexPath类型是用来获取用户选择的indexPath,在别的函数里面,若需要知道用户选择了哪个cell,用上它可以省事很多.不必再去建全局变量section和row. NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow]; 1.    UITableView的初始化 UITableView tableview= [[UITableView alloc] initWithFrame:CGRectMa

iOS-动态调整UITableViewCell的高度

OS-动态调整UITableViewCell的高度iOS开发文档, by 友盟翻译组 stefaliu. 大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的.在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableViewCell.你当然可以通过子类化它来实现,但是这样做会使得代码复杂因为设置高度是在图表本身的实例上而不是对单元格操作.下面你将会看到这其实是一件轻而易举的事情.对于图表来说能够动态调整高度是件很

一、UITableView的属性

NSIndexPath类型是用来获取用户选择的indexPath,在别的函数里面,若需要知道用户选择了哪个cell,用上它可以省事很多.不必再去建全局变量section和row. NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow]; 1.    UITableView的初始化 UITableView tableview= [[UITableView alloc] initWithFrame:CGRectMa

UITableView基础入门

新建一个Single View Application 添加一个空类如下: using System; using UIKit; using Foundation; namespace BasicTable { public class TableSource : UITableViewSource { string[] TableItems; string cellIdentifier="TableCell"; public TableSource (string[] items)

[zz]UITableView进行讲解 真的是太详细了

首先.对UITableView进行讲解,下面有对它进行实际的应用 UITableView  显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍存在于iPhone的应用程序中 TableView Styles UITableView有两个默认的内置风格, 第一个是UITableViewStylePlain(简明风格,简明风格表明表格视图自身没有真正地在你自己实际地提供任何外观之前提供很多的外观,大部分情况下,它会做的唯一的事情是它会给你这些header和foo

[UITableView]简介

An instance of UITableView (or simply, a table view) is a means for displaying and editing hierarchical lists of information. 一个UITableVIew(简单的来讲,一个表格视图)的实例是展示和编辑分层的信息列表的方法 A table view displays a list of items in a single column. UITableView is a su