在标签栏之间发送数据

时间:2015-11-11 09:27:34

标签: ios swift tabs

我需要发送一条数据,指示哪一行从我的tab tableviewcontroller发送到主视图控制器,然后我可以根据viewDidAppear中的值采取行动

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    //selectedRow = indexPath.row
    self.tabBarController?.selectedIndex = 0
}

然后在另一个视图控制器中执行某些操作:

override func viewDidAppear(animated: Bool) {
    //selectedRow = row sent from tab bar,
    //load data from plist at index of the selected row
}

这是最好的方法吗?感谢

2 个答案:

答案 0 :(得分:2)

您可以为其他视图控制器声明属性,并在tableView:didSelectRowAtIndexPath:方法中设置其值。

OtherViewController:

class OtherViewController: UIViewController {
    var selectedRow: Int = 0

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        // load data from plist at index using selectedRow property
    }
}

TableViewController' tableView:didSelectRowAtIndexPath:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var tabIndex = 0

    if let vc = self.tabBarController?.viewControllers?[tabIndex] as? OtherViewController {
        vc.selectedRow = indexPath.row
    }
    self.tabBarController?.selectedIndex = tabIndex
}

答案 1 :(得分:0)

您应该使用prepareForSegue,然后您就可以在segue之间传输信息。 看一下标识符属性和目标属性