ios-numberOfRowsInSection计数问题

问题描述

numberOfRowsInSection计数问题

大家好,现在有一难题请高手帮忙,用一个动态数组存储用户的照片。

arryData = [[NSArray alloc] initWithObjects:@"pic1.png", @"pic2.png", @"pic3.png", @"pic4.png", @"pic5.png", @"pic6.png",@"pic7.png", @"pic8.png",nil];

数组中包含的照片数量不限,8,20或者100都可以。在tableView中,每行创建4个UIimageView,添加到cell.conentView中。所以要求是:

  • 如果arryData有3个对象,要UITable创建1行
  • 如果arryData有4个对象,要UITable创建1行
  • 如果arryData有5个对象,要UITable创建2行
  • 如果arryData有8个对象,要UITable创建2行
  • 如果arryData有10个对象,要UITable创建3行

以此类推

所以问题就是怎么实现这样的数学问题?

   - (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

    }

还是看一下图片预览效果吧

解决方案

基本上,你需要除以4,四舍五入,由于在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

如你有 10个对象,那么需要的行数为

(10-1)/4 + 1 = 3

如你有 5个对象,那么需要的行数为

(5-1)/4 + 1 = 2

时间: 2024-10-21 21:36:41

ios-numberOfRowsInSection计数问题的相关文章

ios 引用计数-objective-c关于引用计数问题

问题描述 objective-c关于引用计数问题 #import @interface ViewController : UIViewController @property(nonatomic,retain)NSString *string1; @property(nonatomic,retain)NSString *string2; @end @implementation ViewController (void)viewDidLoad { [super viewDidLoad]; NSL

iOS离线推送icon计数问题

问题描述 IM本身会有推送消息的功能 然后APP的其它功能也需要用到推送 这个时候会造成推送的数字无法叠加 不准确的情况 该如何解决? 解决方案 开通实时消息回调功能(收费功能,联系我们)可以实现.没有其他好方法解决.

iOS UITableView代理方法详解

IOS UITableView的代理方法详解 一.补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法作了总结,对上一篇博客进行了补充. 二.UITableViewDataSourc(数据源代理) 1.必须实现的回调方法 返回每个分区的行数 - (NSInteger)tableView:(UITableView *)tableView nu

你真的了解iOS代理设计模式吗?

本文是投稿文章,作者:刘小壮 在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识.我会通过这些方面的知识,带大家真正领略代理的奥妙.写的有点多,但都是干货,我能写下去,不知道你有没有耐心看下去.本人能力有限,如果文章中有什么问题或没有讲到的点,请帮忙指出,十分感谢! iOS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 通知:在iOS中由通

iOS开发入门:简单表视图

表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录.频道列表等.表视图分段.分组.索引等功能使我们所展 示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言.  不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当值得的. 简单表视图 表视图的形式灵活多变,本着由浅入深的原则,我们先从简单表视图开始学习.本节讲的简单表视图是动态表,(iOS 5之前全

IOS 内存优化和调试技巧

基础部分 1: 图片内存大小小结 a: 图片:是占用内存的大户,尤其是手机游戏图片资源众多.对图片资源在内存中占用量的计算成为J2ME游戏开发者的经常性工作,CoCoMo来解释一下如何计算图片在内存中的占用量:内存占用量=宽*高*像素字节数,其中像素字节数因机型而异. 例如一张64*64的图片在7210上的内存占用量=64*64*1.5=6144(字节)=6K.在S60上的内存占用量=64*64*2=8192 (字节)=8K.像素字节数因机型而异,例如 7210是4096色机型,也就是说用12位

[译]开发者眼中 iOS 11 都更新了什么?

本文讲的是[译]开发者眼中 iOS 11 都更新了什么?, 原文地址:What's new in iOS 11 for developers 原文作者:Paul Hudson 译文出自:掘金翻译计划 译者: Swants 校对者: Danny1451 RichardLeeH 苹果在 2017 年全球开发者大会上公布了 iOS 11 , 其加入许多强大的功能,如 Core ML,ARKit,Vision,PDFKit,MusicKit 拖放等等. 我尝试着把主要变化在接下来的文章里总结了出来,并在

iOS中 MediaPlayer framework实现视频播放

版权声明:本文为博主原创文章,未经博主允许不得转载.   iOS开发中播放音乐可以使用MPMusicPlayerController类来实现,播放视频可以使用MPMoviePlayerController和MPMoviePlayerViewController类来实现,同时MPMediaPickerController 类可以用于从系统媒体库中选择媒体播放.这几个类都包含与MediaPlayer.framework框架中. 这里主要介绍MediaPlayer.framework 指定根视图: [

iOS开发之加载大量网络图片优化

1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示.比如: ? 1 2 3 4 5 6 7 -(UIImage *) getImageFromURL:(NSString *)fileURL {   //NSLog(@"执行图片下载函数");       UIImage * result;       NSData * data = [NSData d