我需要发送一条数据,指示哪一行从我的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
}
这是最好的方法吗?感谢
答案 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之间传输信息。 看一下标识符属性和目标属性