我有一个分段控件有三个段。 “牛”,“羊”和“山羊”。在绵羊和山羊中还有另一个分段控制“RFID”和“暴徒”
我在父viewController,cattleView,sheepGoatMob视图和sheepGoatRFID视图上使用了三个容器视图,其中包含UITableViewControllers CattleTableViewController,SheepGoatMobTableViewController和SheepGoatRfidTableViewController。父视图包含隐藏/显示每个视图的if语句,它可以正常工作..
我遇到的问题是每个子视图都需要能够从父视图上的UIBarButtonItem将其页面上的信息发送到soap Web服务。我的第一个想法是在每个子视图中都有一个“发送”按钮,但因为当应用程序启动时所有三个视图都被加载到内存中,该按钮不知道要调用哪个视图函数。
编辑:如何在父视图控制器的UIBarButtonItem的三个视图中的每个视图中设置一个按钮,并允许调用childViewControllers中的正确函数?
选项2:如何通过父视图控制器上的UIBarButtonItem访问三个childviewcontroller的函数?
答案 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的警告。