当前位置: 首页 > 知识库问答 >
问题:

当选择了一个UITableViewCell时,如何生成一个推送序列

颛孙俊
2023-03-14

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

问题是我可以以编程方式创建推送 segue 吗?如果不是,我可以通过准备预演传递效果?如果我尝试使用准备前推器,我会遇到一个问题,即从 UITableView 拖动控件不允许我创建一个推送到添加效果视图控制器的 segue。

共有3个答案

越文康
2023-03-14

这是另一个不需要使用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
        }
    }
}
戎劲
2023-03-14

这个答案显示了如何传递数据,并针对 Xcode 8 和 Swift 3 进行了更新。

以下是设置项目的方法。

  • 使用表视图创建项目。有关一个简单的示例,请参阅此处。
  • 添加第二个视图控制器
  • 控制从具有表视图的第一个视图控制器拖动到第二个视图控制器。选择“显示”作为后续类型。
  • 单击故事板中的segue,然后在属性检查器中将标识符命名为“your Segue”。(您可以随意称呼它,但您也需要在代码中使用相同的名称。)
  • (可选)您可以通过选择序列图像板中的第一个视图控制器并转到编辑器,将所有内容嵌入到导航控制器中

第一个带TableView的视图控制器:

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

关于在视图控制器之间传递数据的更基本的例子,请看这个答案。

孟和怡
2023-03-14

控件从视图控制器拖到视图控制器

您需要为 segue 提供一个标识符:

执行后续操作:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"yourSegue" sender:self];
}

现在是这样的,如果您需要将一些数据传递给视图控制器,这将只执行分段。然后,您必须实现以下分段委托:

- (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
    }
}
 类似资料:
  • 我想在选择另一个select元素的一个选项时显示一个select元素,在选择另一个选项时隐藏它。 这是JavaScript: 感谢任何帮助。谢谢

  • 问题内容: 有没有比以下更有效的方法: 问题答案: 在查询中使用PARTITION(partitionN)语法应该非常少见。 通常,您只想为分区键指定值,并允许Oracle执行分区消除。例如,如果您的表每天根据TRANSACTION_DATE进行分区 将从今天的分区,昨天的分区和前一天的分区中选择所有数据。

  • 问题内容: 动机 假设我们有一个如下所示的类加载层次结构: 假设Classloader用于加载类。它检查类加载器是否可以加载它,再次检查类加载器是否可以加载它。由于两者都不能,所以由classloader加载。 任何依赖的类都是一样的。我相信我了解这一过程。 题 我不明白为什么会尝试首先加载。在Java应用程序中如何选择当前的类加载器? 问题答案: 如您所知,默认情况下,Java使用引导类加载器和

  • 问题内容: 我正在努力 但是,如果其中一个表为空,它将不返回任何内容。我如何使它返回“ a”,即使另一个为空? 问题答案: 在子句中使用两个表在功能上等效于: 这将为B中的每一行返回A行。当B为空时,结果也为空。您可以使用来解决此问题。使用,即使其中一个表为空,也可以返回行。例如: 由于该条件始终为真,因此这就像一个条件,除了它也适用于空表。

  • 我怎样才能使一个字母出现在日历上,而不是两个,例如MO我想成为M。我已经尝试过使用周末短,使三个字母"MON",有人知道如何使"M"

  • 问题内容: 我对CSS选择器有疑问。仅当在具有类名的a中时,如何选择具有特定类名的a ?这个CSS类在其他地方使用,我不想在任何地方更改样式。 问题答案: 只需在父元素和后代元素之间使用CSS后代选择器(空格)即可: 在这种情况下,仅适用于Class的规则,前提是其祖先是该Class的规则。相反,您可以使用直接子组合器,但是您必须指定与每个父/祖先的关系,直到需要其类的父子/祖先,这可能很难维护C