2017-01-01 3 views
0

У меня есть поисковый тег для моего приложения. Это позволяет пользователям добавлять поисковые теги, чтобы упростить поиск. Просмотр тега поиска выполняется. Но у меня возникают проблемы с доступом к тексту из тегов и их компиляция для создания одной большой строки. Кто-нибудь может мне помочь. Вот код. Я взял rptagcontroller проекта репо из github и настроил его. Все, что я хочу сделать, это взять текст из всех тегов и поместить их в одну большую строку, чтобы я мог передавать данные на следующий контроллер представления.Доступ к тексту из вида тега

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 

    } 
} 

ответ

1

Согласно странице GitHub из RRTagController, два обратных вызовов блоков либо предоставить список выбранных и невыбранных тегов или ничего, если пользователь отменяет. Таким образом, согласно вашему коду, вы можете получить доступ к тегам в блоках следующим образом:

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

Я пытаюсь передать данные в следующий контроллер представления. Как передать selectedtagsasstrings в следующий viewcontroller – user7222919

+0

Это зависит. Если вы используете раскадровки, вы можете сохранить выбранные теги в качестве экземпляра var, выполнить программно segue ('performSegue (withIdentifier: sender:)'), установить выбранные теги в 'func prepare (для: UIStoryboardSegue, sender: Any?) '. Кроме того, вы можете просто программно запустить следующий контроллер представлений, установить выбранные теги на контроллере представления и показать следующий контроллер вида Посмотрите на это: http://stackoverflow.com/a/13980519/1594442 –

+0

Я знаю, как пройти данные. но что будет строка, которую я передаю. как бы объявить это. Как бы я мог вызывать все выбранные tagsasstrings – user7222919

Смежные вопросы