私のサードパーティのRSSフィードパーサライブラリを私のアプリケーションに使用しました。私は各ページのテーブルビューでRSSフィードを表示するほぼ15ページを持っています。問題は、すべてのビューコントローラがRSSフィードリンクを除いて同じコードを持つことです。私は、コードの重複を減らしながら、現在作業中のすべてのテーブルビューが機能するような方法でコードを減らす方法を知らない。すべてのビューコントローラでTableViewの繰り返しコード - Swift 3
私が使用しているコードは次のとおりです。
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? {
}
}
助けてください。私はSwiftには新しいです。私はSwift 3.0を使用しています。各テーブルビューが適切に配置されるためには、上記のすべてのメソッドが必要です。
BaseViewControllerからself.tableView.reloadData()のようなテーブルを再ロードするにはどうしたらいいですか?私はその行にあいまいなエラーメッセージを表示しています。 – Mamta
この場合、次のオプションがあります。1テーブルビューをリロードするメソッドをオーバーライドします。 2-基本クラスの 'tableView'を宣言し、コンポーネントのIBOutletをスクリーンショットに示された@YogeshMakwanaとして接続します。 –