3 回答
TA贡献2065条经验 获得超14个赞
control 从View Controller拖动到View Controller
从View Controller到View Controlle!
您需要为您的segue提供一个标识符:
执行segue:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"yourSegue" sender:self];
}
现在这是事情,如果您需要将一些数据传递给该视图控制器,它将仅执行segue。然后,您必须实现以下segue委托:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"yourSegue"])
{
//if you need to pass data to the next controller do it here
}
}
TA贡献1848条经验 获得超10个赞
迅速
该答案显示了如何传递数据,并针对Xcode 8和Swift 3进行了更新。
这是设置项目的方法。
使用创建一个项目TableView。请参阅此处的简单示例。
添加第二个ViewController。
从具有表格视图的第一视图控制器到第二视图控制器的控制拖动。选择“显示”作为segue类型。
单击情节提要中的segue,然后在“属性检查器”中,将标识符命名为“ yourSegue”。(您可以随意调用它,但还需要在代码中使用相同的名称。)
(可选)您可以通过在情节提要中选择第一个视图控制器,然后转到编辑器>嵌入>导航控制器,将所有内容嵌入到导航控制器中。
码
具有TableView的First View控制器:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// ...
// method to run when table view cell is tapped
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Segue to the second view controller
self.performSegue(withIdentifier: "yourSegue", sender: self)
}
// This function is called before the segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// get a reference to the second view controller
let secondViewController = segue.destination as! SecondViewController
// set a variable in the second view controller with the data to pass
secondViewController.receivedData = "hello"
}
}
第二视图控制器
class SecondViewController: UIViewController {
@IBOutlet weak var label: UILabel!
// This variable will hold the data being passed from the First View Controller
var receivedData = ""
override func viewDidLoad() {
super.viewDidLoad()
print(receivedData)
}
}
有关在视图控制器之间传递数据的更基本的示例
TA贡献1796条经验 获得超10个赞
这是另一个选项,不需要使用didSelectRowAtIndexPath。
您只需将Interface Builder中的序列从原型单元连接到目标即可。
从那里您可以简单地:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "AffiliationDetail", let destination = segue.destinationViewController as? AffiliateDetailViewController {
if let cell = sender as? UITableViewCell, let indexPath = tableView.indexPathForCell(cell) {
var affiliation = affiliations[indexPath.row]
destination.affiliation = affiliation
}
}
}
- 3 回答
- 0 关注
- 505 浏览
添加回答
举报