【问题标题】:Custom UIViewController on instantiateViewControllerWithIdentifierinstantiateViewControllerWithIdentifier 上的自定义 UIViewController
【发布时间】:2014-11-28 16:09:11
【问题描述】:

简单地说:

Interface Builder 允许您将故事板中基于 UIViewController 的某个类分配给自定义视图控制器,并通过将任何 ID 指定为 storyboardID 来识别它。

调用 UIStoryBoard 的 instantiateViewControllerWithIdentifier 会对其进行实例化,并返回实例化的视图控制器的 id,到目前为止,一切顺利。不,这是挑战:

我的 Storyboard 布局非常复杂,我想从不同的基于 UIViewController 的类中使用它。一个简单的方法是简单地复制场景,并分配不同的类和 ID。但是,这会破坏情节提要,并且如果多个控制器使用相同的布局,则会增加额外的开销。

所以我想到了一种方法,用程序定义的类(取决于应用程序的状态)实例化视图控制器,但我没有找到任何可行的方法。我想到了一些简单的事情,例如:

UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:viewIdentifier usingClass:aClass];

有什么想法吗?

【问题讨论】:

    标签: uiviewcontroller uistoryboard


    【解决方案1】:

    好的,我太专注于 UIStoryboard/NIB 问题。找到之后,答案很简单。只需在基类中overwrride awakeFromNib 并设置一个新类(自然必须基于基类而不定义任何附加内容)。

    - (void) awakeFromNib
    {
        Class aNewClass = /* whatever's needed to find the correct class ... */
        object_setClass(self, aNewClass);
    }
    

    就是这样。 instantiateViewControllerWithIdentifier 将已经返回新类。

    【讨论】:

    • 啊,别忘了:#import
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多