设置ViewController 数据源无法改变view

在使用XIB创建UIViewController并尝试动态更新界面时遇到界面不更新的问题。通过打印查看生命周期方法,发现未先调用loadView导致问题。修改代码顺序为先调用loadView再设置数据,成功解决了界面不更新的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

病情描述:

  1. viewController创建的时候勾选了xib,然后在显示的时候调用了如下语句:

         MTDetailDealViewController *detailController = [[MTDetailDealViewController alloc]init];
         detailController.deal = [self.deals objectAtIndex:indexPath.item];
         [self presentViewController:detailController animated:YES completion:nil];
  2. 发现界面根本没有按照数据源发生改变

病情原因:

  1. 将viewController的几个生命周期关键方法进行打印,发现:
    
             2016-04-20 01:26:44.369 MTHD[6384:380078] -[MTDetailDealViewController initWithNibName:bundle:](114):
             2016-04-20 01:26:44.370 MTHD[6384:380078] -[MTDetailDealViewController init](99):
             2016-04-20 01:26:44.370 MTHD[6384:380078] -[MTDetailDealViewController setDeal:](50):
             2016-04-20 01:26:45.421 MTHD[6384:380078] -[MTDetailDealViewController loadView](95):
  2. 联想起上篇知识总结
    iOS viewController 和 view 的创建消失生命周期总结的第4点

改正如下:

         MTDetailDealViewController *detailController = [[MTDetailDealViewController alloc]init];
        //必须得先调用view,否则下面的句子将会无效
        [detailController loadView];
        detailController.deal = [self.deals objectAtIndex:indexPath.item];
        [self presentViewController:detailController animated:YES completion:nil];

再次打印发现:

            2016-04-20 01:29:28.728 MTHD[6452:382311] -[MTDetailDealViewController initWithNibName:bundle:](114):
            2016-04-20 01:29:28.729 MTHD[6452:382311] -[MTDetailDealViewController init](99):
            2016-04-20 01:29:28.983 MTHD[6452:382311] -[MTDetailDealViewController loadView](95):
            2016-04-20 01:29:28.983 MTHD[6452:382311] -[MTDetailDealViewController setDeal:](50):

转载于:https://www.cnblogs.com/peaceWang/p/5410966.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值