【问题标题】:Accessing text from a tag view从标签视图访问文本
【发布时间】:2017-05-16 03:13:24
【问题描述】:

我的应用有一个搜索标签视图。它允许用户添加搜索标签以使搜索更容易。搜索标签视图全部完成。但是我在从标签访问文本并将它们编译在一起以制作一个大字符串时遇到问题。有人能帮我吗。这是代码。我从 github 获取了 repo 项目 rrtagcontroller 并对其进行了定制。我要做的就是从所有标签中获取文本并将它们放在一个大字符串中,以便我可以将数据传递给下一个视图控制器。

override func viewDidAppear(_ animated: Bool) {
    let tag = ["Macbookpro13inch"]

    RRTagController.displayTagControllerAsAChild(self, frame: CGRect(x: 0.0, y: 161.0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height - 161), tagsString: tag, blockFinish: { (selectedTags, unSelectedTags) -> () in
    }) { () -> () in
    }

}

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let vc = segue.destination
    vc.transitioningDelegate = transition
    vc.modalPresentationStyle = .custom

    if (segue.identifier == "ToHomeRoomDetailsViewController"){
        var destinationVC:HomeRoomDetailsViewController = segue.destination as! HomeRoomDetailsViewController


        destinationVC.HomeDescriptiontext = tagString

    }
}

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    根据 RRTagController 的 github 页面,这两个回调块将提供选定和未选定标签的列表,或者如果用户取消,则不提供任何内容。所以根据你的代码,你可以访问块中的标签如下:

    RRTagController.displayTagControllerAsAChild(self, frame: CGRect(x: 0.0, y: 161.0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height - 161), tagsString: tag, blockFinish: { (selectedTags, unSelectedTags) -> () in
    
        //map the selectedTags into an array of strings
        let selectedTagsAsStrings = selectedTags.map { $0.textContent }
    
        //join the strings into one comma-separated string
        let tagString = selectedTagsAsStrings.joinWithSeparator(",")
    
        //do everything else with tagString
        //for e.g., store it locally
        self.tagString = tagString
    
    }) { () -> () in
        //user did not select any tag, remember to handle this as well
    }
    

    【讨论】:

    • 我正在尝试将数据传递给下一个视图控制器。如何将 selectedtagsasstrings 传递给下一个视图控制器
    • 视情况而定。如果您使用故事板,您可以将选定的标签存储为实例变量,以编程方式执行 segue (performSegue(withIdentifier:sender:)),将选定的标签设置在 func prepare(for: UIStoryboardSegue, sender: Any?) 中。或者,您可以仅以编程方式初始化下一个视图控制器,在视图控制器上设置选定的标签并显示下一个视图控制器请参见:stackoverflow.com/a/13980519/1594442
    • 我知道如何传递数据。但是我要传递的字符串是什么。我将如何声明。我将如何调用所有 selectedtagsasstrings
    • 你可以在下一个视图控制器类上声明一个 [String] 类型的变量。然后在初始化下一个视图控制器后,将其设置为selectedTagsAsStrings
    • 要调用该数据,请使用 for in 循环
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2015-04-07
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多