首先需要等uitableview加载完数据后你才可以设置哪个cell被默认选中,所以逻辑的处理需要在函数
-(void)viewDidAppear:(BOOL)animated;中来处理,这是第一点。
第二点要注意的是如何得到这个默认被选中的cell。获取默认选中的uitableviewcell的前提是知道这个cell的索引位置indexpath
int rowIndex=0;NSIndexPath indexPath =[NSIndexPath indexPathForRow:rowIndex inSection:0];
UITableViewCell cell=[selftableView cellForRowAtIndexPath:indexPath];
一般的话- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath 这个方法里应该都会设置cell内的显示内容,在didselect里面你把上面那个方法里的[xxxx objectAtIndex:indexPathrow] xxxxx]再次赋给你自己要取指的对象不就可以了么
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类。
使用UICollectionView 必须实现UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout这三个协议。
下面先给出常用到的一些方法。(只给出常用的,其他的可以查看相关API)
#pragma mark -- UICollectionViewDataSource
//定义展示的UICollectionViewCell的个数
-(NSInteger)collectionView:(UICollectionView )collectionView numberOfItemsInSection:(NSInteger)section
{
return 30;
}
//定义展示的Section的个数
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView )collectionView
{
return 1;
}
//每个UICollectionView展示的内容
-(UICollectionViewCell )collectionView:(UICollectionView )collectionView cellForItemAtIndexPath:(NSIndexPath )indexPath
{
static NSString CellIdentifier = @"GradientCell";
UICollectionViewCell cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
cellbackgroundColor = [UIColor colorWithRed:((10 indexPathrow) / 2550) green:((20 indexPathrow)/2550) blue:((30 indexPathrow)/2550) alpha:10f];
return cell;
}
#pragma mark --UICollectionViewDelegateFlowLayout
//定义每个UICollectionView 的大小
- (CGSize)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath )indexPath
{
return CGSizeMake(96, 100);
}
//定义每个UICollectionView 的 margin
-(UIEdgeInsets)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(5, 5, 5, 5);
}
#pragma mark --UICollectionViewDelegate
//UICollectionView被选中时调用的方法
-(void)collectionView:(UICollectionView )collectionView didSelectItemAtIndexPath:(NSIndexPath )indexPath
{
UICollectionViewCell cell = (UICollectionViewCell )[collectionView cellForItemAtIndexPath:indexPath];
cellbackgroundColor = [UIColor whiteColor];
}
//返回这个UICollectionView是否可以被选择
-(BOOL)collectionView:(UICollectionView )collectionView shouldSelectItemAtIndexPath:(NSIndexPath )indexPath
{
return YES;
}
一般的话-
(UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath
)indexPath 这个方法里应该都会设置cell内的显示内容,
在didselect里面你把上面那个方法里的
[xxxx objectAtIndex:indexPathrow] xxxxx]
再次赋给你自己要取指的对象不就可以了么
1大部分的都是叫你将 estimatedRowHeight = 0;来关闭自动布局适配来解决,可这样又会让我的cell高度没法自适应所以我们采用只更新cell内容不更新高度的方式来解决。
用例如下: 点击cell的点赞功能,使点赞数量加1并点亮点赞的图标。
主要步骤在 利用indexpath获取你所点击的哪一行cell,然后重新赋值即可,就不用再去刷新整个tab或者固定的一行celll 了,这样他就不会去计算高度也就不会发生跳动了
myindexrow 是点击的inddexpathrow
NSIndexPathindexPath=[NSIndexPathindexPathForRow:myindexrow inSection:0]; mysquareCell1 mycell = [selfmytableview cellForRowAtIndexPath:indexPath] mycellmylabel9text= [NSStringstringWithFormat:@"%ld",(long)(mymodup_like- mymoddown_like)];
mylabel9就是你想要刷新后改变的值。
以上就是关于uitableview单选,cell全部的内容,包括:uitableview单选,cell、怎样获取UITableViewCell相对于UITableView的坐标、ios 怎么获取uicollectionview的可见单元格等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)