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

Я не проверял это, но он должен работать так же, как если бы вы открывали его на отдельном контроллере представления.

Другие вопросы по тегам