2015-02-15 8 views
20

UITableView पर, पूरी तरह स्थिर तालिका दृश्य कॉन्फ़िगरेशन संभव है। आप UITableView के डेटासोर्स को डिस्कनेक्ट कर सकते हैं और प्रत्येक सेल को आईबी का उपयोग करके स्टोरीबोर्ड (या xib) पर डाल सकते हैं।पूरी तरह से स्थैतिक UICollectionView संभव है?

मैंने UICollectionView के साथ एक ही चीज़ की कोशिश की। UICollectionView के डेटासोर्स को डिस्कनेक्ट करें। स्टोरीबोर्ड पर प्रत्येक सेल को UICollectionView पर रखें। मैंने बिना किसी त्रुटि के इसे बनाया। लेकिन यह काम नहीं किया। कोशिकाओं को बिल्कुल प्रदर्शित नहीं किया गया था।

क्या UICollectionView डेटासेट के बिना संभव है?

+0

जब आप 'cellForItemAtIndexPath' आप बल्कि कोशिकाओं की एक स्थिर सरणी का उपयोग कर सकता है में अपनी कोशिकाओं का निर्माण 'dequeueReusableCellWithReuseIdentifier' का उपयोग करने से। मैं केवल तभी ऐसा करूंगा यदि आपके पास इसके लिए वास्तव में मजबूत उपयोग केस है, क्योंकि यह बग और प्रदर्शन समस्याओं का कारण बनने की अधिक संभावना है। –

उत्तर

14

सं

एक स्थिर UICollectionViewController बनाना अनुमति नहीं है। आपके पास डेटा स्रोत प्रतिनिधि होना चाहिए।

मैं यह भी इंगित करना चाहता हूं कि स्थिर UITableView नहीं है, लेकिन एक स्थिर UITableViewController है। यह एक अंतर है।

+1

ठीक है। लेकिन आपका आधार क्या है? ऐप्पल दस्तावेज? ऐप्पल UIKit डिजाइनर की प्रतिक्रिया क्या आपको मिला? या आपका अनुभव? – kmugitani

+0

अनुभव। मैंने इसे नहीं देखा, लेकिन आप आईबी में देख सकते हैं कि UITableViewController के विपरीत, यूआईसीओलेक्शन वीसी आपको स्थिर संग्रह का उपयोग करने का विकल्प नहीं देता है। आप यह भी देख सकते हैं कि संग्रह दृश्य में और सेल्स जोड़ना सिर्फ सेल प्रारूप जोड़ रहा है। – AShavit

10

आप आसानी से एक स्थिर UICollectionViewController बना सकते हैं। उन्हें

बस इंटरफ़ेस बिल्डर की हर कोशिका बनाने के लिए, देना फिर से उपयोग पहचानकर्ता (उदाहरण के लिए "Home_1" "Home_2" "Home_3"), और तरीकों को पॉप्युलेट इस प्रकार है:

class HomeViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout { 
    let cellIdentifiers:[String] = ["Home_1","Home_2","Home_3"] 
    let sizes:[CGSize] = [CGSize(width:320, height:260),CGSize(width:320, height:160),CGSize(width:320, height:100)] 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return cellIdentifiers.count 
    } 
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     return collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifiers[indexPath.item], for: indexPath) 
    } 
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     return sizes[indexPath.item] 
    } 
} 

तब दृश्य नियंत्रक सेट उचित वर्ग के होने के लिए, और, हे प्रतिष्ठा, एक (मूल रूप से) स्थैतिक संग्रह। मैं कहना है माफी चाहता हूँ, लेकिन इस सुदूर पोर्ट्रेट और लैंडस्केप विचारों का समर्थन करने के लिए आप नियंत्रण के समूह है जब सबसे अच्छा तरीका है ...

संबंधित मुद्दे