UIViewController vs UITableViewController
UITableViewController और UIViewController iOS UIKit फ्रेमवर्क के दो अलग-अलग ऑब्जेक्ट हैं। दोनों अलग-अलग उद्देश्यों के लिए उपयोग किए जाते हैं।
एक UIViewController क्लास एक ViewController को प्रबंधित करती है जो उस व्यू कंट्रोलर के भीतर होने वाली क्रियाओं के लिए जिम्मेदार होता है। यह क्लास व्यू कंट्रोलर पर होने वाली क्रियाओं से अवगत होती है, जैसे ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear।
जबकि, एक UITableViewController एक टेबल को प्रबंधित करने के लिए जिम्मेदार होता है, इसका डेटा और इसके इवेंट्स UITableViewDataSource, UITableViewDelegate का उपयोग करके।
एक UITableViewController UIViewController, UITableViewDataSource और UITableViewDelegate के अनुरूप होता है ताकि टेबल व्यू इम्प्लीमेंट किया जा सके।
UIViewController इम्प्लीमेंट करने वाले क्लास का उदाहरण:
class ViewController: UIViewController {
@IBOutlet weak var sampleView: UIView!
override func viewDidLoad() { }
}
एक UITableViewController भी UIViewController के अनुरूप होता है, इसलिए यह UIViewController के मेथड्स इम्प्लीमेंट कर सकता है। UITableViewController का उपयोग ज्यादातर तब किया जाता है जब उस व्यू कंट्रोलर में टेबल व्यू के अलावा कोई अन्य कंटेंट नहीं होता।
अगर व्यू कंट्रोलर में टेबल व्यू के साथ अन्य कंटेंट भी है, तो हम ज्यादातर इसे UIViewController के अनुरूप बनाते हैं और टेबल व्यू के प्रोटोकॉल इम्प्लीमेंट करते हैं जो UITableViewDataSource हैं उस टेबल को डेटा का कुछ स्रोत असाइन करने के लिए और UITableViewDelegate उस टेबल व्यू पर इवेंट्स हैंडल करने के लिए।
UITableViewDataSource/Delegate इम्प्लीमेंट करने वाले UIViewController का उदाहरण:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
override func viewDidLoad() { }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { }
}
टेबल व्यू की कुछ अन्य प्रॉपर्टीज:
- जब टेबल व्यू दिखाई देने वाला होता है तो यह अपना डेटा रीलोड करता है।
- टेबल व्यू डिफ़ॉल्ट रूप से दिखाई देने पर अपना चयन साफ़ करता है।
- जब टेबल व्यू स्क्रीन पर दिखाई देता है, तो इसके स्क्रॉल इंडिकेटर्स फ्लैश होते हैं। यह viewDidAppear() मेथड के भीतर किया जाता है।