首先很抱歉,如果格式不正确,第一次这样做。很长一段时间以来,我一直在使用 stackoverflow 寻求帮助,这非常有帮助(谢谢大家),但这是我第一次发布自己的问题。这个问题已被问过很多次,但是当我调用 [myTable reloadTable] 时,会调用方法 numberOfSectionsInTableView 和 numberOfRowsInSection,但不会调用 cellForRowAtIndexPath。
我在搜索时看到的每个答案都是以下变体: 1) tableView 为零 2) numberOfRowsInSection 为 0 3) tableView 的委托(delegate)/数据源未设置 4) 在错误的 uiTableView 上调用 reloadTable。
这些都不是我的情况,所以我想知道还有什么问题。
我正在尝试做的事情: 我有一个带有按钮的自定义 uitableviewcell,按下按钮时我想更改单元格的属性(例如,假设我想将单元格标题更改为“按下按钮”)。然后我想暂停片刻,然后删除该单元格。
不确定这是否重要,但我的 tableView 在 UIViewController 中,而 viewController 是委托(delegate)和数据源。
我有一个方法(如下)在按下按钮时触发并且单元格属性根据需要更改,但是当我尝试刷新表格以显示更改时它不起作用。第一次调用 [remTable reloadData] 时,会调用 numberofsectionsintableview 和 numberofrowsinsection 但不会调用 cellforrowatindexpath。然而,第二次 [remTable reloadData] 被调用时,所有三个方法都被调用并且一切正常。
doneCell.remName.text=@"BUTTON PRESSED";
[remTable reloadData];
NSLog(@"sleep");
sleep(1);
[remList removeObject:doneReminder];
[remTable reloadData];
为了测试这一点,我将 nslog 语句放在 numberofsections、numberofrows 和 cellforrow 的开头,输出是方法名称后跟数字(对于 numberofsections/numberofrows)。
输出:
numberofsections 1
numberofrows 3
sleep
numberofsections 1
numberofrows 2
cellforrow
关于为什么 cellforrow 没有被第一次调用的任何想法?在此先感谢,如果我还有什么可以补充说明的,请告诉我。
最佳答案
在需要显示单元格之前, TableView 实际上并不请求单元格。当您调用 reloadData 时,它会立即请求部分和行数,以便它知道需要多大。在要求显示自己之前,它不会要求单元格本身。在每个运行循环开始时, View 会根据需要自动显示。
在您的代码返回之前,执行不会返回到运行循环。当您调用 sleep 时,您不会执行任何代码,但您也不会返回。这意味着运行循环没有机会显示表格,因此它从不请求任何单元格。您需要做的是从您的方法返回并要求在 1 秒内调用另一个方法以删除 doneReminder。一种简单的方法是使用 performSelector:withObject:afterDelay: 方法。此方法添加一个计时器,它将在给定延迟后调用您请求的方法,这意味着您可以返回运行循环并让表格显示。
doneCell.remName.text=@"BUTTON PRESSED";
[remTable reloadData];
[self performSelector:@selector(removeDoneReminder) withObject:nil afterDelay:1.0];
- (void)removeDoneReminder {
[remList removeObject:doneReminder];
[remTable reloadData];
}
如果remlist和remTable不是实例变量,可以使用withObject:参数将它们发送到removeDoneReminder 方法。
关于objective-c - reloadData 调用 numberOfSections、numberOfRows,而不是 cellForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9305024/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候