मैं स्टोरीबोर्ड संपादक में UIViewController
में UILabel
(राशि लेबल) जोड़ता हूं। और फिर स्विफ्ट फ़ाइल में, viewDidLoad
, मैं प्रोग्रामिक रूप से UITextField
(भुगतान टेक्स्टक्ल्ड) बना देता हूं और amountLabel
और paymentTextField
के बीच एक बाधा जोड़ने की कोशिश करता हूं। यहाँ viewDidload
में मेरे कोड है:स्विफ्ट जोड़ें बाधा प्रोग्रामेटिक
let paymentTextField = UITextField()
paymentTextField.translatesAutoresizingMaskIntoConstraints = false
paymentTextField.frame = CGRectMake(15, 100, CGRectGetWidth(self.view.frame) - 30, 44)
self.view.addSubview(paymentTextField)
let bottonConstraint = NSLayoutConstraint(item: paymentTextField, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.amountLabel , attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 30)
bottonConstraint.identifier = "paymentTextFieldSpacing"
NSLayoutConstraint.activateConstraints([bottonConstraint])
लेकिन मैं कोई त्रुटि मिलती है:
"Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with items > and > because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal."
किसी को क्या गलत है पता है? amountLabel
सीधे स्टोरीबोर्ड में दृश्य में खींचा गया है और "भुगतान टेक्स्टक्ल्ड" को उसी दृश्य में प्रोग्रामेटिक रूप से जोड़ा गया है। वे कोई आम पूर्वज क्यों नहीं हैं?
आपके उत्तर के लिए धन्यवाद। मैं यह नहीं समझ सका कि कैसे लैबेल और भुगतानटेकफ़ील्ड को उसी माता-पिता को देना है। मैंने स्टोरीबोर्ड में राशि लेबल खींच लिया और उसके माता-पिता को बाहरी दृश्य होना चाहिए। मैंने selfTview के लिए प्रोग्रामेटिक रूप से भुगतानTextField जोड़ा और इसके माता-पिता को बाहरी दृश्य भी होना चाहिए। उनके पास अलग-अलग माता-पिता कैसे हैं? – jimshicard
क्या आपने पुष्टि की है कि उनके पास समान माता-पिता हैं, जैसे प्रिंटिंग TextField.superview? यदि वे नहीं करते हैं, तो स्टोरीबोर्ड बाहरी दृश्य से नियंत्रक को आईबीओटलेट खींचें और सबव्यूव के रूप में भुगतान टेक्स्टफिल्ड जोड़ने के लिए इसका उपयोग करें। साथ ही, सुनिश्चित करें कि आप addSubview कॉल के बाद बाधा जोड़ रहे हैं, पहले नहीं। – Pauls