Ios 如何通过UITABBARC控制器将indexPathForSelectedRow传递到UITABBView?

Ios 如何通过UITABBARC控制器将indexPathForSelectedRow传递到UITABBView?,ios,swift,uitableview,uitabbarcontroller,Ios,Swift,Uitableview,Uitabbarcontroller,我正在尝试从UITableView切换到uitabarcontroller中的特定选项卡。在谷歌搜索时,我发现有两组信息似乎说明了如何操作,但都没有使用UITableView作为源代码 guard let destination = segue.destination as? YourTabbarSubClass else {return } 第一个来源是我在StackOverflow上找到的这个写得很好的答案: guard let destination = segue.destinatio

我正在尝试从
UITableView
切换到
uitabarcontroller
中的特定选项卡。在谷歌搜索时,我发现有两组信息似乎说明了如何操作,但都没有使用
UITableView
作为源代码

guard let destination = segue.destination as? YourTabbarSubClass else {return }
第一个来源是我在StackOverflow上找到的这个写得很好的答案:

guard let destination = segue.destination as? YourTabbarSubClass else {return }
第二个来源是这个网站:

guard let destination = segue.destination as? YourTabbarSubClass else {return }
我一直在尝试为我的应用程序结合这两种功能。下面是我的原始UIViewController的截断版本(如果需要,我可以发布完整版本,只是大部分代码与此序列无关,我不认为):

guard let destination = segue.destination as? YourTabbarSubClass else {return }
我的问题解决方法是尝试将
tableView.indexPathForSelectedRow?.row
传递给
UITabViewController
。在上述代码段末尾附近的
prepare(for segue)
中,我得到一个编译错误,该错误出现在
destination.bonus=
行中,该行表示

guard let destination = segue.destination as? YourTabbarSubClass else {return }
“TabBarViewController”类型的值没有成员“红利”

guard let destination = segue.destination as? YourTabbarSubClass else {return }
这在技术上是正确的,因为我只是尝试通过TabBarViewController传递到它控制的第二个选项卡

guard let destination = segue.destination as? YourTabbarSubClass else {return }
如何解决上述问题,让我点击单元格,然后将所选行传递给目标
UITabView

guard let destination = segue.destination as? YourTabbarSubClass else {return }
编辑:如果有帮助,这里有一张故事板的图片。

guard let destination = segue.destination as? YourTabbarSubClass else {return }
“TabBarViewController”类型的值没有成员“红利” 因为“TabBarViewController”没有名为bonus的属性

guard let destination = segue.destination as? YourTabbarSubClass else {return }
您可以子类化
TabBarViewController
addproperty
bonus

guard let destination = segue.destination as? YourTabbarSubClass else {return }
从segue开始设置,就像

guard let destination = segue.destination as? YourTabbarSubClass else {return }
您可以通过
destination.bonus

guard let destination = segue.destination as? YourTabbarSubClass else {return }
现在,当您需要tabbar控制器提供的
奖金时,您可以将其与
(self.tabbarController as!yourtabarsubclass)一起使用。奖金

guard let destination = segue.destination as? YourTabbarSubClass else {return }
编辑

guard let destination = segue.destination as? YourTabbarSubClass else {return }
class  TabBarViewController: UITabBarController {
   // Add property bonus here
     var bouns:BounsStruct?

}
现在从需要的视图控制器开始

guard let destination = segue.destination as? YourTabbarSubClass else {return }
class YourFirstTabVC:UIVIewController {
   //where you need that 
   self.bouns = (self.tabbarController as!  TabBarViewController).bouns
   self.tableview.reloadData()


}

我有点同意你的建议。你有没有可能再澄清一点
bonus
指向
JsonFile.jsonbonus
,它包含在单独的JsonFile.swift文件中。所以我想你是说将它添加到UITabBarController的swift文件中以消除错误,然后在该文件中执行另一个
prepare(for segue)
,然后指向我想要的选项卡(这是第二个选项卡)?@DJFriar否。你只需要创建新的类。作为TabbarController的子类。现在将其分配给故事板中的tabbar控制器。现在,作为tabbar控制器一部分的所有视图控制器(2-3个选项卡)都可以使用self.tabbarcontroller访问该属性。不用了,我不知道你的意思。我的选项卡栏视图控制器指向TabBarViewController.swift。其中,当前为空。我想你是建议在那里增加一类
奖金
,但我不确定应该放什么。我在我的任何其他页面中定义
bonus
的唯一方法类似于
var-bonus:JsonFile.jsonbonus?
,它引用了JsonFile.swift,它只包含我用来填充UITableView的JSON的结构。@DJFriar是的,您必须在tabbar控制器类中使用bonus变量,因此我对TabBarViewController进行了更改,并向其添加了
var bonus:JsonFile.JsonBonuses?
。在我的CaptureBonUstAbar中,我尝试添加
self.bonus=(self.TabBarViewController as!TabBarViewController.bonus)
时出错。如果我将其添加到类的顶部,则会得到“CaptureBonusTabViewController声明中的预期声明”。该声明类似于,
class CaptureBonusTabViewController:UIViewController、UINavigationControllerDelegate、UIAbardElegate、UIImagePickerControllerDelegate、MFMailComposeViewControllerDelegate、,CLLocationManagerDelegate{