8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在 Objective-C 中使用新数据强制重新加载视图控制器

JensV 2月前

45 0

当用户点击图像时,我希望将用户带到相同的视图控制器,但使用不同的数据。换句话说,我只想用不同的数据重新绘制相同的屏幕,而不是使用 segue...

当用户点击图像时,我希望将用户带到相同的视图控制器,但使用不同的数据。换句话说,我只想用新数据重新绘制相同的屏幕,而不是使用 segue。

根据 LLama,您需要做的就是调用 [my View setNeedsDisplay]; [myView setNeedsLayout]; 但是,我已包含这些行,但屏幕保持不变。我已检查未调用 viewwillappear 或 view didload。如何使用新数据强制重绘?

不包括手势识别器代码,因为它可以正常工作,但如果需要,我们很乐意提供。这是我尝试重新绘制屏幕的地方:

-(void) gotoParentItem {
    Feed* parentFeed = [self getFeedFromId: self.feed.parentid];//this works
    self.feed = parentFeed;//resets feed data used to populate VC
    [self.view setNeedsDisplay];//no effect
    [self.view setNeedsLayout];  //no effect
}

谢谢您的任何建议。

帖子版权声明 1、本帖标题:如何在 Objective-C 中使用新数据强制重新加载视图控制器
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由JensV在本站《objective-c》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 假设视图需要了解 Feed 对象,那么它如何知道视图控制器具有新实例或新数据。

  • Joakim 是的,但我更愿意不手动更改 View 控制器的每一个元素。理想情况下,我希望通过重新运行 view did load 来完全刷新它。我猜 setNeedsDisplay 和 setNeedsLayout 只会重新调整 uielements,而不会重新加载 VC。它们肯定不会触发 viewdidload 或 viewwillappear 或任何生命周期方法。

  • Warren。AI 的建议是 setneedsdisplay 或 setneedslayout 可以做到这一点,但它们似乎只会重绘页面的 UI 元素,而不会触及元素的任何内容或调用生命周期方法。您能否建议一种方法来告诉 VC 它有新数据,以便它使用数据触发重新加载,还是我必须手动逐一浏览并使用新数据对象更新所有内容?我当然可以这样做,但只需重绘页面并从新数据对象中提取内容会更简洁。

  • 我不想调用生命周期方法,因为这是非常糟糕的做法,例如 [self viewDidLoad]; 寻找某种间接触发生命周期方法的方法。

返回
作者最近主题: