【问题标题】:Mechanism about "did" and "will" and "should" method关于“did”、“will”和“should”方法的机制
【发布时间】:2013-05-02 16:35:21
【问题描述】:
我想大致了解一下包括主题中所述的关键词的方法是什么时候被调用的。
例如:
– tableView:willSelectRowAtIndexPath:
– tableView:didSelectRowAtIndexPath:
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
willSelectRow 方法何时调用?
方法中包含“will”“did”和“should”这两个关键词是什么意思
类似的还有viewDidAppear 和viewWillAppear。调用 viewDidAppear 方法时很明显。但是 viewWillAppear 是远远超出我的。
希望有人可以提供帮助;)
【问题讨论】:
标签:
ios
viewdidload
viewwillappear
viewdidappear
uitableview
【解决方案1】:
意志:
用于表示某事将要发生(即将发生)。有点像“我要去商店”。
做过:
用于表示某事确实发生(已经发生)。有点像“我确实去过商店”。
应该:
几乎总是用作返回BOOL 的委托方法。例如,
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
表格视图询问您是否要允许此时选择指定索引处的行。就像你问别人,'我应该去商店吗?'
viewWillAppear
这并没有什么特别之处——只是系统告诉你的视图控制器,“嘿,你的视图即将显示在屏幕上,你最好做好准备!”
【解决方案2】:
willSelectRow:告诉代理即将选择指定的行。
didSelectRow:告诉代理指定的行现在已被选中。
应该:返回表格视图是否应该允许选择指定的行。
它与 viewDidAppear 和 viewWillAppear 的工作方式相同。
viewDidAppear:视图已经出现。
viewWillAppear:视图即将出现。
您可以在苹果文档中了解更多信息。
希望对你有所帮助!
【解决方案3】:
想象一下编写一个包含食谱的应用程序,由国家健康饮食委员会赞助。
您的赞助商为您提供了 10 种清蒸蔬菜食谱,以及一份解释如何制作美味的奶油、杏仁糖和果酱甜点。
赞助商的要求是:
- 根据用户的喜好,食谱必须以公制/英制单位显示。
- 传闻有些人对清蒸菜谱不是天生的兴奋,所以每浏览3页菜谱,屏幕底部必须显示一只可爱的兔子吃胡萝卜的动画,以使应用程序更很受欢迎。
- 当用户浏览了5个蒸菜食谱时,他们有权查看甜点食谱。一次。
为了满足这些要求,您可以这样使用方法/通知:
在viewWillAppear 上,以公制或英制单位计算重量和体积,并在配方页面的各种标签和文本字段中输入正确的文本。这保证了文本在显示给用户时已经更新。如果您在viewDidAppear 中进行操作,则在更新文本时会出现短暂的可见闪烁。
在viewDidAppear 上,您知道配方已正确设置并且用户可以在屏幕上看到。这意味着如果满足条件,您可以启动兔子的动画。如果您在viewWillAppear 中启动动画,它会启动得太早。
最后,如果偷偷摸摸的用户试图点击甜点食谱,您将收到tableView:shouldSelectRow: 消息。检查是否满足条件(如果他们已经查看了 5 个蒸菜食谱),如果满足,则返回 YES。否则返回NO,系统将取消该行选择(甜点配方没有实例化和显示)。