2017-10-16 64 views
0

我的應用程序在應用程序購買中使用,如果發現用戶沒有高級版本,則處理它們嘗試使用的函數的類將調用MKStoryKit ,這是一個讓StoryKit更容易處理的類。 MKStoryKit不是視圖或視圖控制器,它只是用於實用程序。我想要調用的視圖是一個自定義視圖,它爲它們提供了高級版本的功能,併爲用戶提供了一些選項,同時看起來比系統警報稍微漂亮。在我的iOS應用,從故事板聲明視圖後(此視圖沒有塞格斯要把它)使用:從視圖控制器外部調用macOS中的視圖

NSString *storyboardName = @"Main"; 
NSString *viewID = @"TermsOfUseQuery"; 
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:storyboardName bundle:nil]; 
UIViewController *Terms = [storyBoard instantiateViewControllerWithIdentifier:viewID]; 

我所說的下面一行它只是呈現之上先前宣佈的UIViewController「條款」無論目前正在發生:

[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:Terms animated:YES completion:nil]; 

我想知道是否有類似的macOS方法,我一直無法找到它。我知道,一般來說,iOS上的任何「UI」都會變成「NS」,我已經說明了這一點,比如聲明NSViewController。

作爲替代方案,我已經成功使用調用從主視圖控制器內部的觀點:

let board:NSStoryboard = NSStoryboard(name: "Main", bundle: nil) 
    let viewtest:NSViewController = board.instantiateController(withIdentifier: "termsOfUseVC") as! NSViewController 
    self.presentViewControllerAsModalWindow(viewtest) 

這有我要找的效果,但它必須從MKStoryKit實現(這是一個Objective-C類)。我想知道是否有人爲此提供瞭解決方案,或者只是在任何時候將視圖顯示爲模式窗口(首選,實際上是單線所做的),或者將其視爲當前「頂層」窗口頂部的模態窗口視圖?謝謝大家!

回答

1

我發現了一個辦法做到這一點,發佈本作的情況下,任何人備查人需要這在未來,或者,如果其他人嘗試使用谷歌爲此:

[[NSApplication sharedApplication].keyWindow.windowController.contentViewController presentViewControllerAsModalWindow:Terms]; 

這將爲從視圖來自應用程序最近窗口的故事板,儘管「from」部分並不太相關,因爲這會將View視爲自己的窗口。如果您選擇使用:

[[NSApplication sharedApplication].keyWindow.windowController.contentViewController presentViewControllerAsSheet:Terms]; 

那麼這將提出它作爲最後一個窗口了slideDown,這就是窗口的身份,如果你有多個事項。這兩行中的「術語」是一個NSViewController,我已經展示瞭如何在原始答案中聲明(除了NS,而不是UI,macOS與iOS的區別)。實際的聲明是下面清楚起見:

NSString *storyboardName = @"Main"; 
NSStoryboard *storyBoard = [NSStoryboard storyboardWithName:storyboardName bundle:nil]; 
NSViewController *Terms = [storyBoard instantiateControllerWithIdentifier:@"termsOfUseVC"]; 

希望這可以幫助別人。

相關問題