URL открытия IBAction для взаимодействия ячеек Таблицы в XCode
Не удалось найти ответ, который я искал для этого... (Swift 2.0)
У меня есть контроллер представления таблицы, в котором находится несколько ячеек таблицы. Каждая ячейка имеет желаемое действие, которое должно произойти после того, как ячейка выбрана пользователем.
Я настроил его так, что он открывает совершенно новый вид, а затем этот вид запрограммирован на немедленное открытие указанного URL.
Смотрите здесь Storyboard.main ИЛИ вот пример файла.swift для вторичного контроллера представления:
import Foundation
import UIKit
class twitterSocial: UIViewController, UIApplicationDelegate {
override func viewWillAppear(animated: Bool) {
let twitterID: NSURL = NSURL(string: "...")!
let twitterWebURL: NSURL = NSURL(string: "...")!
if UIApplication.sharedApplication().canOpenURL(twitterID){
//checks to see if Twitter is installed
UIApplication.sharedApplication().openURL(twitterID)
}
else{
// Twitter NOT installed - Safari
UIApplication.sharedApplication().openURL(twitterWebURL)
}
}
override func viewWillDisappear(animated: Bool) {
print("View Will Dissapear")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Можно ли запрограммировать это таким образом, чтобы ячейка таблицы таблиц открывала желаемый URL без необходимости включать второе представление? Потому что когда пользователь затем возвращается в приложение, текущее представление остается пустым, и им затем приходится возвращаться к предыдущему представлению.
1 ответ
Вы можете сделать это с помощью метода tebleViewDelegate, который вызывается, когда пользователь нажимает на ячейку.
let twitterIDs: [NSURL] = [NSURL(string: "...")!]
let twitterWebURLs: [NSURL] = [NSURL(string: "...")!]
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if UIApplication.sharedApplication().canOpenURL(twitterIDs[indexPath.row]){
//checks to see if Twitter is installed
UIApplication.sharedApplication().openURL(twitterIDs[indexPath.row])
}
else{
// Twitter NOT installed - Safari
UIApplication.sharedApplication().openURL(twitterWebURLs[indexPath.row])
}
}
Я не проверял это, но он должен работать так же, как если бы вы открывали его на отдельном контроллере представления.