Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios swift中具有分段控件的容器视图_Ios_Iphone_Swift_Uisegmentedcontrol_Uicontainerview - Fatal编程技术网

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

Ios swift中具有分段控件的容器视图,ios,iphone,swift,uisegmentedcontrol,uicontainerview,Ios,Iphone,Swift,Uisegmentedcontrol,Uicontainerview,我有一个三段的分段控件。“牛”、“羊”和“山羊”。在绵羊和山羊中,还有另一个分段控制“RFID”和“MOB” 我在父视图控制器上使用了三个容器视图:cattleView、sheepGoatMob视图和sheepGoatRFID视图,它们具有UITableViewController CattleTableViewController、SheepGoatMobTableViewController和SheepGoatRfidTableViewController。父视图包含用于隐藏/显示每个视图的

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

我在父视图控制器上使用了三个容器视图:cattleView、sheepGoatMob视图和sheepGoatRFID视图,它们具有UITableViewController CattleTableViewController、SheepGoatMobTableViewController和SheepGoatRfidTableViewController。父视图包含用于隐藏/显示每个视图的if语句,该语句可以正常工作

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

编辑:如何在父视图控制器的UIBarButtonItem的三个视图中分别设置一个按钮,并允许调用子视图控制器的正确功能?


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

我找到了一个解决方案,将所有三个视图加载到内存中,并能够使用@Julian的响应更改调用的函数:


您需要确保其他视图被隐藏,否则您将从xcode收到警告

我找到了一个解决方案,将所有三个视图加载到内存中,并能够使用@Julian的响应更改我调用的函数:


您需要确保其他视图被隐藏,否则您将从xcode收到警告

通常使用代理向上传递视图层次结构中的操作。因此,您将为每个containerViewController创建一个代理,该代理将“didTapButton”事件发送到其代理,该代理将是“mainViewController”,然后执行网络调用。谢谢,我将尝试一下并发布我的solution@DBoyer问题是我的每个函数都在ChildViewController中,不是主视图控制器。我需要能够在parentViewController上有一个按钮来触发这些功能。目前,我得到:警告:尝试显示不在窗口层次结构中的视图!或者,您可以使用NSNotification Center,在点击按钮时发布通知,每个子视图控制器都将是一个观察者。我解决了我的问题,我会尽快发布,谢谢:)通常您使用代理向视图层次结构上传递操作。因此,您将为每个containerViewController创建一个代理,该代理将“didTapButton”事件发送到其代理,该代理将是“mainViewController”,然后执行网络调用。谢谢,我将尝试一下并发布我的solution@DBoyer问题是我的每个函数都在ChildViewController中,不是主视图控制器。我需要能够在parentViewController上有一个按钮来触发这些功能。目前,我得到:警告:尝试显示不在窗口层次结构中的视图!或者,您可以使用NSNotification Center,在点击按钮时发布通知,每个子视图控制器都将是一个观察者。我解决了我的问题,我会尽快发布,谢谢:)通常您使用代理向视图层次结构上传递操作。因此,您将为每个containerViewController创建一个代理,该代理将“didTapButton”事件发送到其代理,该代理将是“mainViewController”,然后执行网络调用。谢谢,我将尝试一下并发布我的solution@DBoyer问题是我的每个函数都在ChildViewController中,不是主视图控制器。我需要能够在parentViewController上有一个按钮来触发这些功能。目前,我得到:警告:尝试显示不在窗口层次结构中的视图!或者,您可以使用NSNotification Center,在点击按钮时发布通知,每个子视图控制器都将是一个观察者。我已修复了我的问题,我将尽快发布,谢谢:)
//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()
        }
    }
}