जबकि इस पृष्ठ पर उत्तर ऊंचाई की बाधाओं को जोड़ने या मैन्युअल रूप से 44 की तरह रोहाइट्स को वापस करने पर चर्चा करते हुए ऊंचाई मेंForRowAtIndexPath चेतावनी को दूर जाने का कारण बनते हैं, वे बहुत कम हैं क्योंकि यह Xcode में एक बग कम से कम संस्करण 6.3.2 (6D2105) में दिखाई देता है।
यदि आप viewDidLoad में एक ब्रेकपॉइंट सेट करते हैं, तो आप देखेंगे कि self.tableView.rowHeight = -1 (UITableViewAutomaticDimension) भले ही आप स्टोरीबोर्ड में 44 की एक पंक्ति ऊंचाई निर्दिष्ट करें। ऐसा इसलिए है क्योंकि Apple गलत तरीके से मानता है कि यदि आप 44 पर पंक्ति की ऊँचाई छोड़ते हैं, तो आप डायनामिक रो हाइट्स चाहते हैं, क्योंकि उन्होंने आपकी प्राथमिकता बताने के लिए आपको एक ध्वज प्रदान नहीं किया था।
यहां कुछ संभावित उपाय और उनके परिणाम दिए गए हैं:
स्टोरीबोर्ड (कार्यों) में पंक्ति की ऊंचाई 43 या 45 पर सेट करें।
ManForRowAtIndexPath (कार्यों) में मैन्युअल रूप से 44 की ऊंचाई पर लौटें।
UITableViewCell के तत्वों और इसके सामग्री दृश्य (कार्यों) के बीच ऊँचाई की कमी जोड़ें।
दुर्भाग्य से, इन समाधानों के लिए या तो आपको अपना डिज़ाइन बदलने, अनावश्यक बाधाओं को जोड़ने या बग के आसपास काम करने के लिए अनावश्यक कोड जोड़ने की आवश्यकता होती है। मैंने कोशिश की (मैंने जो सोचा था) सबसे सरल समाधान:
- स्टोरीबोर्ड में प्रत्येक UITableViewCell की ऊंचाई 44 (कस्टम) पर सेट करें (विफल)।
मैं वास्तव में इसके लिए एक शुद्ध स्टोरीबोर्ड समाधान चाहता था, इसलिए आखिरकार मैंने कोशिश की:
- स्टोरीबोर्ड में UITableView में एक उपयोगकर्ता-निर्धारित रनटाइम विशेषता जोड़ें, और UITableView को एक नोट के साथ नाम दें कि कैसे इसकी पंक्तिहाइट सेट की जा रही है ताकि भविष्य के डेवलपर इसे पा सकें: (कार्य):

ये बग आईओएस विकास में सभी सामान्य हैं और डेवलपर्स को अत्यधिक समय बिताने के लिए मजबूर करते हैं कि उनके समाधान लंबे समय में स्थिरता को कैसे प्रभावित करेंगे।
चूंकि एक वैचारिक रूप से सही समाधान मिल रहा है, जो कि रखरखाव योग्य है और ऐसा नहीं लगता है कि यह बहुत ही मायावी है, और यह मानते हुए कि Apple बग को ठीक कर देगा और यह कि 44 भविष्य के भविष्य के लिए डिफ़ॉल्ट पंक्ति ऊंचाई होने जा रहा है, तो बाधा या उपयोगकर्ता-परिभाषित रनटाइम विशेषता समाधान संभवतः सबसे अधिक रखरखाव योग्य हैं।