Google карты в панели вкладок пользовательского интерфейса в Swift программно - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть этот код, где я хотел бы иметь панель вкладок на картах Google. Я хотел бы загрузить карты Google на панель вкладок по умолчанию, когда вызывается метод let firstVc = UIViewController(), можно ли поместить код карт Googleв другом swift-файле и вызовите этот swift-файл в методе func createTabBarController ().

Я создал панель вкладок программно

//
//  MainVC.swift
//  ZODV1
//
//  Created by sskadit on 21/11/18.
//  Copyright © 2018 sskadit. All rights reserved.
//

import Foundation
import GoogleMaps

//import GooglePlaces

import UIKit

class MainVC: UIViewController {
    let tabBarCnt = UITabBarController()


    override func viewDidLoad() {
        super.viewDidLoad()


//         Create a GMSCameraPosition that tells the map to display the
//         coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 4.0)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        view = mapView

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
        mapView.layoutMargins = UIEdgeInsets(top: 0, left: 100, bottom: 10000000, right: 60)






        let image = UIImage(named: "nearby_deals_icon") as UIImage?

        let btn: UIButton = UIButton(type: UIButton.ButtonType.roundedRect)
        btn.frame = CGRect(x: 120, y: 690, width: 200, height: 70)
        btn.backgroundColor = UIColor.red
        btn.setTitle("Find Near By Deals", for: UIControl.State.normal)
        btn.setBackgroundImage(image, for: UIControl.State.normal)
        btn.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

        btn.setTitleColor(UIColor.white, for:UIControl.State.normal)

//        self.view.addSubview(btn)
//        createTabBarController()
//        print(check)
        createTabBarController()

//        func createTabBarController(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
//            print("Selected Index :\(self.selectedIndex)");
//        }
//


        tabBarCnt.tabBar.tintColor = UIColor.black



        NotificationCenter.default.addObserver(self,
                                               selector: #selector(showProfile),
                                               name: NSNotification.Name("ShowProfile"),
                                               object: nil)
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(showSettings),
                                               name: NSNotification.Name("ShowSettings"),
                                               object: nil)
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(showSignIn),
                                               name: NSNotification.Name("ShowSignIn"),
                                               object: nil)
    }

    @objc func showProfile() {
        performSegue(withIdentifier: "ShowProfile", sender: nil)
    }

    @objc func showSettings() {
        performSegue(withIdentifier: "ShowSettings", sender: nil)
    }

    @objc func showSignIn() {
        performSegue(withIdentifier: "ShowSignIn", sender: nil)
    }


    @IBAction func onMoreTapped() {

        NotificationCenter.default.post(name: NSNotification.Name("ToggleSideMenu"), object: nil)
    }






    func createTabBarController()  {

        let firstVc = UIViewController()
        firstVc.title = "First"
//        firstVc.view.backgroundColor =  UIColor.red
        firstVc.tabBarItem = UITabBarItem.init(title: "Home", image: UIImage(named: "HomeTab"), tag: 0)




        let secondVc = UIViewController()
        secondVc.title = "Second"
        secondVc.view.backgroundColor =  UIColor.green
        secondVc.tabBarItem = UITabBarItem.init(title: "Location", image: UIImage(named: "Location"), tag: 1)

        let controllerArray = [firstVc, secondVc]
        tabBarCnt.viewControllers = controllerArray.map{ UINavigationController.init(rootViewController: $0)}
        print(tabBarCnt.viewControllers)
        self.view.addSubview(tabBarCnt.view)

    }

}

В панели вкладок я хотел бы загрузить карты Google на первый виртуальный канал в первом контроллере представления.

Какпожалуйста, помогите с уважением !!

Ожидаемый результат enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

Не сильно усложняй вещи.Правильный способ использования UITabBarController состоит в том, чтобы сделать его корневым экраном вашего приложения, а затем просто добавьте ваши viewControllers в свойство viewControllers вашего tabBarController, например:

import UIKit

class LLFTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.delegate = self

        // Setup ViewControllers

        let homeVC = HomeViewController()
        homeVC.tabBarItem = UITabBarItem(title: "Home", image: UIImage.tabEatNormal.imageWithColor(.lalaChoicePriceColor), selectedImage: .tabEatSelected)
        let homeNavCon = UINavigationController(rootViewController: homeVC)

        let searchCategoriesVC = SearchCategoriesViewController()
        searchCategoriesVC.tabBarItem = UITabBarItem(title: "Search", image: UIImage.tabSearchNormal.imageWithColor(.lalaChoicePriceColor), selectedImage: .tabSearchSelected)
        let searchNavCon = UINavigationController(rootViewController: searchCategoriesVC)


        self.viewControllers = [
            homeNavCon,
            searchNavCon
        ]
    }

}

Затем в вашем viewControllerкоторая будет содержать Google Map, просто установите ее там (в частности, в viewDidLoad).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...