• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c# - InstantiateViewController 调用 ViewDidLoad

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:32:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个经典的主从逻辑并尝试在单击事件中使用 InstantiateViewController 创建详细 UIViewController 的实例。

这是我的代码,

MasterViewController.cs

detailButton += delegate {
   UIStoryboard Storyboard = UIStoryboard.FromName ("Main", null);
   Console.WriteLine("InstantiateViewController() started");
   var profileController = Storyboard.InstantiateViewController("rofileController") as ProfileController; 
   Console.WriteLine("InstantiateViewController() ended");
   profileController.Id = 5;  
};

ProfileViewController.cs

public partial class ProfileController : UIViewController
{
    public int Id { get; set; }
    public override void ViewDidLoad() 
    { 
        Console.WriteLine("ViewDidLoad() called");
    }
}

当我点击按钮输出时,

InstantiateViewController() started
ViewDidLoad() called
InstantiateViewController() ended

这意味着 profileController.Id 设置在 ViewDidLoad() 之后,这意味着我无法在 ViewDidload 事件中按 Id 加载数据,因为 Id 为空。

所以我的问题是为什么ViewDidLoad()会被InstantiateViewController()调用,我应该在哪个方法中按Id加载数据?

谢谢。



Best Answer-推荐答案


VoewDidLoadcalled ViewController 加载到内存时。

因此,获取数据的正确位置是 ViewDidAppearViewDidAppear 通知 ViewController 它的 View 已添加到 View 层次结构中。

更新:

根据评论中提供的新信息,您可以执行以下操作:

public partial class ProfileController : UIViewController
{
    private int _id;

    public void SetupProfile (int id)
    {
        // Save the Id if necessary.
        _id = id;
        // Add event with this id related.
    }
    public override void ViewDidLoad() 
    { 
        Console.WriteLine("ViewDidLoad() called");
    }
}

如果您仍想在 ViewDidAppear 中进行事件设置,则可以将这种方法与事件一起使用:

yourClass.Event -= MyHandler;
yourClass.Event += MyHandler;

关于c# - InstantiateViewController 调用 ViewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37779245/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap