私はiOS開発に不慣れで、いくつか問題があります...
私は SwiftUI をアーキテクチャ (VIPER/B) で使用しています。これは、このスタックを使用した ios dev の最初のステップです。
ここから基本プロジェクトを取得します
だから私は自分のモジュールを構築するfuncを持っていて、それは私を返しますViewController
:
final class HomeModule: ModuleInterface {
typealias View = HomeView
typealias Presenter = HomePresenter
typealias Router = HomeRouter
typealias Interactor = HomeInteractor
func build() -> UIViewController {
let presenter = Presenter()
let interactor = Interactor()
let router = Router()
let viewModel = HomeViewModel()
let view = View(presenter: presenter, viewModel: viewModel)
.environmentObject(AppEnvironment())
presenter.viewModel = viewModel
self.assemble(presenter: presenter, router: router, interactor: interactor)
let viewController = UIHostingController(rootView: view)
router.viewController = viewController
return viewController
}
}
その後、私はこの関数を my で呼び出しますRouter
:
final class LoginRouter : LoginRouterProtocol {
weak var presenter : LoginPresenter!
weak var viewController: UIViewController!
func presentHomeScreen() {
viewController.present(HomeModule().build(), animated: true, completion: nil)
}
}
viewController.present
asを除いてビルダーモジュールを呼び出す他の方法は考えていませんでした。weak var viewController: UIViewController!
さらに、元のテンプレートですでに発表されていたため、viewController.present
その結果、この func を自分View
で呼び出すと、ViewController
モーダルになりますが、フルスクリーン プレゼンテーションを取得できません。
私のPresenter
:
var router : LoginRouter!
func login() {
router.presentHomeScreen()
}
私のView
:
Button(action: {
self.login()
}) {
Text("Log in")
}
func login() {
presenter.login()
}
これをフルスクリーンモードで表示するにはどうすればよいですか? そして、デフォルトのようにセグエを表示したいNavigationController
:新しいViewController
ものが左から右に現れるとき。また、私は を使用しようとしましNavigationLink
たが、パラメーターの宛先は型View
ではなく型を取得する必要がありViewController
ます...そして、エラーが発生します:
タイプ '()' は 'View' に準拠できません。構造体/列挙型/クラス型のみがプロトコルに準拠できます