Ich habe eine RSS-Feed-Parser-Bibliothek von Drittanbietern in meiner App verwendet. Ich habe fast 15 Seiten, die den RSS-Feed in Tabellenansichten auf jeder Seite anzeigen. Das Problem besteht darin, dass alle View-Controller den gleichen Code haben, mit Ausnahme der RSS-Feed-Verknüpfung. Ich weiß nicht, wie man den Code so reduzieren kann, dass alle Tabellenansichten funktionieren, während sie gerade arbeiten, während gleichzeitig die Duplizierung von Code reduziert wird.TableView wiederholten Code in allen View-Controllern - Swift 3
Der Code, den ich verwende ist:
import UIKit
class TopStoriesViewController: UIViewController, FeedParserDelegate, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var parser: FeedParser?
var entries: [FeedItem]?
var spinnerActivity: MBProgressHUD! = nil
override func viewDidLoad() {
super.viewDidLoad()
self.spinnerActivity = MBProgressHUD.showAdded(to: self.view, animated: true);
self.spinnerActivity.label.text = "Loading";
self.spinnerActivity.detailsLabel.text = "Please Wait!";
self.spinnerActivity.isUserInteractionEnabled = false;
entries = []
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async(execute: {() -> Void in
self.parser = FeedParser(feedURL: topStoriesLink) // this is the link i need to change in all view controllers
self.parser?.delegate = self
self.parser?.parse()
})
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
// MARK: - FeedParserDelegate methods
func feedParser(_ parser: FeedParser, didParseChannel channel: FeedChannel) {
}
func feedParser(_ parser: FeedParser, didParseItem item: FeedItem) {
}
func feedParser(_ parser: FeedParser, successfullyParsedURL url: String) {
}
func feedParser(_ parser: FeedParser, parsingFailedReason reason: String) {
}
func feedParserParsingAborted(_ parser: FeedParser) {
}
// MARK: - Network methods
func loadImageSynchronouslyFromURLString(_ urlString: String) -> UIImage? {
}
}
Bitte helfen. Ich bin neu in Swift. Ich benutze Swift 3.0. Ich brauche alle oben gezeigten Methoden für jede Tabellenansicht, um richtig zu füllen.
Wie kann ich Tabelle wie self.tableView.ReloadData() von BaseViewController neu laden? Es gibt mir mehrdeutige Fehler msg in dieser Zeile. – Mamta
In diesem Fall haben Sie Abschleppoptionen: 1- Überschreiben Sie die Methode, mit der Sie die Tabellenansicht erneut laden möchten. 2- deklarieren Sie 'tableView' in der Basisklasse und verbinden Sie das IBOutlet der Komponente, wie @YogeshMakwana im Screenshot gezeigt hat. –