2012-09-17 14 views
14

मेरे पास मेरे लेआउट कॉन्स्ट्रेनेंट ठीक काम कर रहे थे, तो अचानक मैंने अपने दृश्य में बाधाओं को जोड़ते समय इसे प्राप्त करना शुरू कर दिया।बाधा में एक प्रथम लेआउट आइटम होना चाहिए NSLayoutConstraint

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Constraint must contain a first layout item' 
*** First throw call stack: 
(0x7cd012 0x2017e7e 0x7ccdeb 0xde6bf1 0x9c487 0x994a3 0x414fb 0x20224 0x5c6c0 0xc30e83 0x78c376 0x78be06 0x773a82 0x772f44 0x772e1b 0x28eb7e3 0x28eb668 0x149465c 0x2cfd 0x2c25) 
libc++abi.dylib: terminate called throwing an exception 

और वहाँ क्या त्रुटि संदेश का अर्थ है के रूप में एप्पल डॉक्स इंटरनेट पर या पर कोई तत्काल प्रलेखन मौजूद है।

बस सोच रहा है कि किसी को इस त्रुटि का सामना करना पड़ा है, और पता है कि मैं समस्या निवारण के लिए क्या कर सकता हूं?

उत्तर

21

आह, इस मुद्दे को मिला। किसी भी व्यक्ति के पास यह समस्या है, ऐसा इसलिए है क्योंकि दृश्य अभी तक nib/UIView में नहीं बनाया गया है, इसलिए कोई बाधा लागू नहीं हो सकती है।

मैंने डीडलोड को देखने के लिए initWithNib विधि से प्रतिबंध कोड को स्थानांतरित किया और त्रुटि स्वाभाविक रूप से बंद हो गई।

+0

मुझे इस दुर्घटना को देखने के लिए भी देखा जा रहा है/दृश्य में जोड़ा गया है। –

+0

हमें अपना कोड दिखाएं, यह कुछ आसान होगा –

33

इस त्रुटि/क्रैश के लिए एक और कारण हो सकता है, [NSLayoutContraint constraintWithItem ...] विधि को पास किए गए विचार शून्य हैं।

+0

@smileBot मैं मजबूत के रूप में सेट करता हूं लेकिन मुझे शून्य देता है। मैंने UIView और loadNib फ़ाइल और updatetheconstraints को बढ़ाया है, लेकिन self.subView के कारण यह क्रैश हो गया है। [self addConstraint: [NSLayoutConstraint constraintWithItem: self.subView विशेषता: NSLayoutAttributeTop संबंधित द्वारा: NSLayoutRelationEqual toItem: स्वयं विशेषता: NSLayoutAttributeTop गुणक: 1.0 निरंतर: 0.0]]; –

0

यह भी अगर आप किसी कारण से autolayout बंद हो सकता है, लेकिन आप अभी भी

यह मेरे लिए जब मैं अलग एनआईबी के लिए इस्तेमाल किया हुआ (ओरिएंटेशन परिवर्तन से निपटने के लिए उदाहरण के लिए) कोड के माध्यम से किसी भी subview के लिए बाधाओं को जोड़ रहे हैं आईफोन और आईपैड के लिए और एक सामान्य। एम फ़ाइल का उपयोग करते समय केवल आईफोन एनआईबी के लिए ऑटोलायआउट बंद कर दिया।

समाधान डिवाइस प्रकार की जांच करना और लेआउट परिवर्धन को छोड़ना है जहां इसकी आवश्यकता नहीं है।

+0

@smileBot मैं मजबूत के रूप में सेट करता हूं लेकिन मुझे शून्य देता है। मैंने UIView और loadNib फ़ाइल और updatetheconstraints को बढ़ाया है, लेकिन self.subView के कारण यह क्रैश हो गया है। [self addConstraint: [NSLayoutConstraint constraintWithItem: self.subView विशेषता: NSLayoutAttributeTop संबंधित द्वारा: NSLayoutRelationEqual toItem: स्वयं विशेषता: NSLayoutAttributeTop गुणक: 1.0 निरंतर: 0.0]]; –

7

यदि आप संपत्तियों के साथ अपने विचारों पर लटक रहे हैं तो सुनिश्चित करें कि वे मजबूत हैं! यह उनके लिए शून्य हो सकता है।

+0

मजबूत मेरी समस्या को ठीक करने के लिए स्विचिंग। धन्यवाद! –

+0

यहां वही, मजबूत समस्या को ठीक करने के लिए स्विचिंग। – blackmoon

+0

@smileBot मैं मजबूत के रूप में सेट करता हूं लेकिन मुझे शून्य देता है। मैंने UIView और loadNib फ़ाइल और updatetheconstraints को बढ़ाया है, लेकिन self.subView के कारण यह क्रैश हो गया है। [self addConstraint: [NSLayoutConstraint constraintWithItem: self.subView विशेषता: NSLayoutAttributeTop संबंधित द्वारा: NSLayoutRelationEqual toItem: स्वयं विशेषता: NSLayoutAttributeTop गुणक: 1.0 निरंतर: 0.0]]; –

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