代码之家  ›  专栏  ›  技术社区  ›  Kaveh Naseri

如何从其他类调用函数

  •  -1
  • Kaveh Naseri  · 技术社区  · 6 年前

    在我的 rootviewcontroller 我在导航菜单下面有三个选项卡,每个选项卡代表产品列表,在导航菜单中,我有一个购物车图标,上面有一个数字以显示购物车中的图标数。 每个标签都是单独的 viewcontroller 他们都重新引用了 根视图控制器 这样地:

    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
        let layout = UICollectionViewFlowLayout()
        let firstTab = FirstTabController(collectionViewLayout: layout)
        let seccondTab = SeccondTabController(collectionViewLayout: layout)
        let thirdTab = ThirdTabController(collectionViewLayout: layout)
    
        return [firstTab ,seccondTab ,thirdTab ]
    }
    

    我在中创建了一个函数 defaultviewcontroller 重置导航菜单中的购物车编号,但我不知道如何从 firsttabController

    这是我的职责 firsttabcontroller

    func AddToCart(sender:UIButton) {
        let activityIndicatorView = NVActivityIndicatorView(frame: self.view.frame, type: .circleStrokeSpin, color: .red, padding: 170)
        self.view.addSubview(activityIndicatorView)
        activityIndicatorView.startAnimating()
    
        let parameters : [String: Any] = [
            "productid": sender.tag ,
            "quantityid": 1
        ]
    
        ApiServiceCart.sharedInstance.addProductToCartCatalog(parameters: parameters) { (success) in
            activityIndicatorView.removeFromSuperview()
            if success == true {
                // here i want to fire DefaultController().setupNavigationMenu()
                self.displayMessage(Title: MessageTitle.Successfull.rawValue, Message: Message.AddToCart_Successfull.rawValue)
            }
            else {
                self.displayMessage(Title: MessageTitle.Error.rawValue, Message: Message.AddToCart_Error.rawValue)
            }
        }
    }
    

    我试过协议委托,但没用

    github.com/kavehnaseri/protino/blob/master/protino. 我要从默认控制器调用的函数是(SetupNavBarButtonsWithCartonLeft)wichi在helper/extension+uiviewController中

    2 回复  |  直到 6 年前
        1
  •  1
  •   Kaveh Naseri    6 年前

    NotificationCenter

    setupBarButtonMenu UIViewController

    override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(self.setupNavBarButtonsWithCartOnLeft), name: NSNotification.Name(rawValue: "CartChanged"), object: nil)
    }
    

    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CartChanged"), object: nil)
    
        2
  •  0
  •   AD Progress    6 年前

    override func viewDidLoad() {
        super.viewDidLoad()
    
        view.backgroundColor = UIColor.myRed
        //THE LINE BELOW EXECUTES JUST FINE
        setupNavBarButtonsWithCartOnLeft()
    
        fetchProducts(pageSize: numberOfItemsPerSection, pageNumber: numberOfItemsPerSection / 9) // 9 - 1
        setupCollectionView()
    }