swift 中带有分段控件的容器视图

Container views with segmented control in swift

我有一个包含三段的分段控件。 "Cattle"、"Sheep" 和 "Goats"。在 Sheep and Goats 中还有另一个分段控件 "RFID" 和 "Mobs"

我在父级 viewController 上使用了三个容器视图,cattleView、sheepGoatMob 视图和 sheepGoatRFID 视图,它们具有 UITableViewControllers CattleTableViewController、SheepGoatMobTableViewController 和 SheepGoatRfidTableViewController。父视图包含 hide/show 每个视图的 if 语句,它工作正常..

我遇到的问题是每个子视图都需要能够将其页面上的信息从父视图上的 UIBarButtonItem 发送到 soap Web 服务。我的第一个想法是在每个子视图中都有一个 "send" 按钮,但是因为当应用程序启动时所有三个视图都加载到内存中,所以按钮不知道要调用哪个视图函数。

编辑:如何在三个视图中分别为父级 viewController 的 UIBarButtonItem 设置一个按钮并允许调用 childViewControllers 中的正确函数?

选项 2: 我如何通过父 viewcontroller 上的 UIBarButtonItem 访问三个子 viewcontroller 的功能?

我找到了一个解决方案,可以将所有三个视图加载到内存中,并且能够使用@Julian 的回复更改我正在调用的函数:Objective-c: How to invoke method in container view controller

//Determine which view is showing and point to the correct child class
func sendTransactionButton(sender: UIBarButtonItem) {
   log.debug("send transaction button called p2p")

    for childViewController in self.childViewControllers {

        if childViewController.isKindOfClass(CattleTableViewController) && containerTableViewCattle.hidden == false {

            var cattleVC = childViewController as! CattleTableViewController
            cattleVC.transactions()

        } else if childViewController.isKindOfClass(SheepGoatRfidTableViewController) && containerSheepGoatsRfid.hidden == false {

            var sheepGoatRFIDVC = childViewController as! SheepGoatRfidTableViewController
            sheepGoatRFIDVC.transactions()

        } else if childViewController.isKindOfClass(SheepGoatTableViewController) && containerTableViewSheepGoats.hidden == false {

            var sheepGoatsMob = childViewController as! SheepGoatTableViewController
            sheepGoatsMob.transactions()
        }
    }
}

您需要确保隐藏您的其他视图,否则您会收到 xcode 的警告。