だいたい死んでる

名古屋で働いているWEBプログラマーです。

iOSで該当のViewControllerが生成されているかを確認する関数を作る

最近暖かくなったり寒くなったりするので体調を崩し気味ですがなんとか気合で乗り越えています。 業務はいい感じなのでいい感じです。

最近iOSを書いていてバックグラウンドで描画している画面を検索したいことがありなんとか実装したのでメモとして残します。

import Foundation
import UIKit

extension UIViewController {
    /**
     * ViewControllerが子や孫に存在する場合はそのViewControllerを返す
     */
    func findChildren<T:UIViewController>(kind:T.Type?) -> T? {
        if let viewControler = self as? T {
            return viewControler
        }
        if let viewControler = self.presentedViewController as? T {
            return viewControler
        }
        if let viewControlers = self.presentedViewController?.children {
            return viewControlers.compactMap{$0.findChildren(kind: kind)}.first
        }
        return nil
    }
}

いい感じにかけた気がするのですが、急いで書いたので抜けてる部分とかありそう。 ご利用は計画的に。