【问题标题】:Cannot modify UI of viewControllers added from storyboard to PageViewController?无法修改从情节提要添加到 PageViewController 的 viewController 的 UI?
【发布时间】:2015-07-04 14:53:43
【问题描述】:

我有一个 PageViewController,我想在其中添加一些“卡片”(ViewController)。每张卡片将占用一页。卡片的 ViewController 需要从 storyboard 中实例化,因为我已经设置了一些 UIOutlet。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    //Get info of the former page
    ZDMainCardsViewController *formerVC = (ZDMainCardsViewController *)viewController;
    //Use a property to mark VC's number
    NSInteger formerIndex = formerVC.cardIndex;

    //Init from Storyboard
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"ZDMain" bundle:[NSBundle mainBundle]];
    UIViewController *cardsVC = [sb instantiateViewControllerWithIdentifier:@"ZDMainCardsCollectionViewController"];

    //Set this VC
    ZDMainCardsViewController *thisVC = (ZDMainCardsViewController *)cardsVC;

    //Fill data according to VC's number.
    //In the beginning I tried to do this in viewDidLoad by using self.cardIndex
    //That turns to be useless, and I add a method to do so
    //Though, it's useless too
    [thisVC loadNextCard:formerIndex];
    return thisVC;
}

代码和我的目标如上所示。现在结果是每张卡都是一样的。断点表明 VC.cardIndex 永远不会改变。在 loadNextCard 方法中,self.oneLabel.text = data 运行没有任何效果。

【问题讨论】:

    标签: ios objective-c iphone uiviewcontroller


    【解决方案1】:

    您可能正试图在 ViewController 的出口被初始化之前访问它们。 当您呈现此视图控制器或访问其view 属性时,视图控制器的视图会延迟加载。

    在访问其网点之前尝试检查viewController.isViewLoaded 属性并调用[viewController loadView] 或在需要时直接调用[viewController view]

    VC.cardIndex 永远不会改变

    您可能忘记增加索引了吗?

    [thisVC loadNextCard:formerIndex + 1];
    

    【讨论】:

    • 非常感谢,阿列克谢! [viewController view] 确实有效!但是我不明白,因为我试图重用来自SB的VC,在我使用[viewController view]之前它怎么可能不在内存中?
    • Storyboard与xib基本相同,在构建项目时编译成nib-s。当您实例化视图控制器时,它只是分配 ViewController 并将其 nibName/bundle 属性设置为稍后在访问 view 属性时延迟加载。
    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2014-07-05
    • 2020-06-02
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多