这更像是一个数学问题而不是其他任何问题。我所拥有的是一个动态数组对象,我在其中存储用户照片。
arryData = [[NSArray alloc] initWithObjects:@"pic1.png", @"pic2.png", @"pic3.png", @"pic4.png", @"pic5.png", @"pic6.png",@"pic7.png", @"pic8.png",nil];
这个数组中可以包含任意数量的对象,例如8或20或100.在我的表视图中,我通过将它们添加到cell.contentview,每行创建了4个UIImageView。所以,如果我们说
那么我如何为arryData中的N个对象执行此操作?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//NSLog(@"Inside numberOfRowsInSection");
//return [arryData count];
//Cannot think of a logic to use here? I thought about dividing [arryData count]/4 but that will give me fractions
}
图片胜过千言万语。
答案 0 :(得分:5)
所以基本上你需要除以四,四舍五入。由于Objective-C中的整数除法会截断(向零舍入),因此可以通过执行以下操作进行舍入:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return (arryData.count + 3) / 4;
}
通常,为了使整数除法(带正整数)向上舍入,在分割之前将分母-1加到分子上。
如果已为每行的图像数定义了常量,请使用它。例如:
static const int kImagesPerRow = 4;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return (arryData.count + kImagesPerRow - 1) / kImagesPerRow;
}
答案 1 :(得分:1)
对于行计数,除以图像数量并向上舍入:
rowCount = ceilf([arryData count] / 4.0);
答案 2 :(得分:0)
我想你只有一个部分:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSInteger photoNumber = [yourDataSource count];
if(photoNumber % numberOfPhotosOnRow == 0) {
return photoNumber/numberOfPhotosOnRow;
}
else {
return photoNumber/numberOfPhotosOnRow + 1;
}
}
答案 3 :(得分:0)
我必须为我稍后写的应用程序创建类似的东西(似乎你想要每个单元格包含4个图像)`
if (tableView == yourTableView)
{
int rows = [yourArray count];
int rowsToReturn = rows / 4;
int remainder = rows % 4;
if (rows == 0) {
return 0;
}
if (rowsToReturn >0)
{
if (remainder >0)
{
return rowsToReturn + 1;
}
return rowsToReturn ;
}
else
return 1;
}`