簡體   English   中英

如何在從界面構建器中的Storyboard場景實例化的視圖控制器上調用自定義init?

[英]How do I call a custom init on a view controller instantiated from a Storyboard scene in interface builder?

如果我正在使用界面生成器來管理應用程序的故事板,那么在創建視圖/視圖控制器實例時如何調用自定義的init選擇器?

例如,如果我在情節提要板場景中有一個視圖控制器,並且它的自定義類UIViewController子類,並且帶有一個自定義初始化程序(如initWithMediaType: ,它以NSUInteger作為參數,那么如何在接口生成器中指定initWithMediaType:傳遞給定參數應該被調用?

storyboard - (instancetype)initWithCoder:(NSCoder *)coder storyboard初始化UIViewController ,系統實際上會調用- (instancetype)initWithCoder:(NSCoder *)coder

因此,當您要進行自己的初始化時,應在自定義UIViewController重寫- (instancetype)initWithCoder:(NSCoder *)coder方法。

對於您的特定問題,可以考慮使用prepareForSegue:並在其中設置您的mediaType:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller
        YourViewController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}

希望對您有所幫助。

如果要在Interface Builder中指定,請在UIViewController子類mediaType聲明為屬性,然后使用“用戶定義的運行時屬性”。

屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM