在快速

时间:2015-06-14 06:45:17

标签: ios iphone swift uisegmentedcontrol uicontainerview

我有一个分段控件有三个段。 “牛”,“羊”和“山羊”。在绵羊和山羊中还有另一个分段控制“RFID”和“暴徒”

我在父viewController,cattleView,sheepGoatMob视图和sheepGoatRFID视图上使用了三个容器视图,其中包含UITableViewControllers CattleTableViewController,SheepGoatMobTableViewController和SheepGoatRfidTableViewController。父视图包含隐藏/显示每个视图的if语句,它可以正常工作..

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

编辑:如何在父视图控制器的UIBarButtonItem的三个视图中的每个视图中设置一个按钮,并允许调用childViewControllers中的正确函数?

选项2:如何通过父视图控制器上的UIBarButtonItem访问三个childviewcontroller的函数?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,可以将所有三个视图加载到内存中,并且能够使用@ 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的警告。