选择UITableViewCell时如何进行推送选择

我在表格视图中有一个效果列表。我创建了一个右上方的按钮,可以将按钮推送到另一个视图控制器,这有助于创建新的效果。现在,我想向表视图单元格添加推式序列,以便可以将效果值加载到添加效果视图控制器上,并且可以保存编辑后的值。

问题是我可以以编程方式创建推送搜索吗?如果不能,我可以通过prepareforsegue吗?如果尝试使用prepareforsegue,则会遇到一个问题,即从中拖动控件UITableView无法使我创建到添加效果视图控制器的推送按钮。



慕慕森
浏览 506回答 3
3回答

翻翻过去那场雪

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    }}

慕桂英546537

迅速该答案显示了如何传递数据,并针对Xcode 8和Swift 3进行了更新。这是设置项目的方法。使用创建一个项目TableView。请参阅此处的简单示例。添加第二个ViewController。从具有表格视图的第一视图控制器到第二视图控制器的控制拖动。选择“显示”作为segue类型。单击情节提要中的segue,然后在“属性检查器”中,将标识符命名为“ yourSegue”。(您可以随意调用它,但还需要在代码中使用相同的名称。)(可选)您可以通过在情节提要中选择第一个视图控制器,然后转到编辑器>嵌入>导航控制器,将所有内容嵌入到导航控制器中。码具有TableView的First View控制器:import UIKitclass 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)    }}有关在视图控制器之间传递数据的更基本的示例

白衣染霜花

这是另一个选项,不需要使用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        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP