UIVIEWCONTROLLER func viewDidLoad() var preferredStatusBarStyle: UIStatusBarStyle { get } UITableViewDataSource var presentationController: UIPresentationController? { get } func childViewControllerForScreenEdgesDeferringSystemGestures() -> UIViewController? func didMove(toParentViewController parent: UIViewController?) var systemMinimumLayoutMargins: NSDirectionalEdgeInsets var edgesForExtendedLayout: UIRectEdge var previewActionItems: [UIPreviewActionItem] var navigationItem: UINavigationItem var shouldAutorotate: Bool ...
class ProfileView: UIView { // Construct subviews and do Auto Layout here } class ProfileViewController: BaseViewController { // Handle actions from view } let profileVC = ProfileViewController() navigationController.pushViewController(profileVC, animated: true)
INPUT OUTPUT class ViewModel { class Input { let fetch = PublishSubject<()>() } class Output { let friends: Driver<[User]> } let apiClient: APIClient let input: Input let output: Output init(apiClient: APIClient) { self.apiClient = apiClient // Connect input and output } }