, пожалуйста, со мной, что я совершенно новичок в Swift и iOS ..
Я пытаюсь сделать «выбор команды» на своем расширении общего ресурса.В идеале я хочу иметь возможность коснуться нижнего колонтитула «Команда» и выбрать несколько команд из табличного представления и, наконец, поделиться / опубликовать выбранные команды.
Я следую учебному пособию с 2016 года, но, к сожалению, к настоящему моменту оно уже устарело, и я не смог найти ни одного подобного, который был бы актуален.(если вы знаете одну, пожалуйста, ссылку)
Я создал TeamTableViewController.swift
(UITableViewController) с жестко закодированным teamList, который я надеюсь заполнить в расширении общего ресурса.
мой файл UITableViewControllerвыглядит так:
import UIKit
protocol TeamViewProtocol {
func sendingViewController(viewController: TeamTableViewController, sentItem: String)
}
class TeamTableViewController: UITableViewController {
var teamList: [String] = ["Team 1", "Team 2", "Team 3", "Team 4", "Team 5"]
var delegate: TeamViewProtocol?
override func viewDidLoad() {
super.viewDidLoad()
self.clearsSelectionOnViewWillAppear = false
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return self.teamList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TeamCell", for: indexPath)
cell.textLabel!.text = self.teamList[indexPath.item]
return cell
}
}
Мой файлер ShareViewController выглядит следующим образом:
import UIKit
import Social
class ShareViewController: SLComposeServiceViewController, TeamViewProtocol {
var item: SLComposeSheetConfigurationItem!
var teamPickerVC: TeamTableViewController!
override func isContentValid() -> Bool {
// Do validation of contentText and/or NSExtensionContext attachments here
return true
}
override func didSelectPost() {
// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.
// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context.
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}
override func configurationItems() -> [Any]! {
self.item = SLComposeSheetConfigurationItem()
self.item.title = "Team"
self.item.value = "None"
self.item.tapHandler = {
self.teamPickerVC = TeamTableViewController()
self.pushConfigurationViewController(self.teamPickerVC)
}
return [self.item]
}
func sendingViewController(viewController: TeamTableViewController, sentItem: String) {
self.item.value = sentItem
self.popConfigurationViewController()
}
}
Когда я нажимаю на окно расширения нижнего колонтитула «Команда» весьрасширение закрывается без сообщения об ошибке.Однако, если я установил в жестко закодированный массив teamList пустой массив, тогда расширения не будут аварийно завершать работу, а вместо этого отображать табличное представление с пустыми строками.
Чего мне не хватает в моих жестко закодированных командахпоказать как ячейка / строки / строки?в табличном представлении?