为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-11-11 12:55:38
我在表格视图中有一个效果列表。我创建了一个右上方的按钮,可以将按钮推送到另一个视图控制器,这有助于创建新的效果。现在,我想向表视图单元格添加推式序列,以便可以将效果值加载到添加效果视图控制器上,并且可以保存编辑后的值。问题是我可以以编程方式创建推送搜索吗?如果不能,我可以通过prepareforsegue吗?如果尝试使用prepareforsegue,则会遇到一个问题,即从中拖动控件UITableView无法使我创建到添加效果视图控制器的推送按钮。
查看完整描述

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

    }

}


查看完整回答
反对 回复 2019-11-11
?
慕桂英546537

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)

    }

}

有关在视图控制器之间传递数据的更基本的示例


查看完整回答
反对 回复 2019-11-11
?
白衣染霜花

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

        }

    }

}


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 505 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信