मैं स्विफ्ट 3 का उपयोग करके एक आईओएस प्रोजेक्ट कर रहा हूं, मेरे पास UIPagerViewController है और मैं इसके अंदर एक व्यू कंट्रोलर की सीमा में एक बटन बनाता हूं। उसके बाद मैंने बटन में एक बाधा जोड़ी, जैसा कि आप नीचे इस छवि में देख सकते हैं: यहां छवि विवरण दर्ज करें

बाधा का मान -33 . है

उसके बाद मैं इस बाधा से संबंधित IBOutlet बनाता हूं:

@IBOutlet weak var rightButtonConstraint: NSLayoutConstraint!

मैं इस मान को प्रोग्रामेटिक रूप से प्राप्त करना चाहता हूं जब व्यू कंट्रोलर शुरू होता है तो मैंने किया:

public var defaultRightConstraint: CGFloat = 0.0
    override func viewDidLoad() {
            super.viewDidLoad()
            defaultRightConstraint = rightButtonConstraint.constant // the constraint return 0
            print(" DEFAULT RIGHT CONSTRAINT \(defaultRightConstraint)") // Returns 0 and not -33 why ?
        }

लेकिन मुझे जो मूल्य मिला है वह पहले से ही 0 है और नहीं -33 मैं क्या गलत कर रहा हूं?

संपादित करें:

मैंने कोशिश की कि सफलता के बिना:

override func viewDidLayoutSubviews() {
        self.view.layoutIfNeeded()
        defaultRightConstraint = rightButtonConstraint.constant
        print(" DEFAULT RIGHT CONSTRAINT \(rightButtonConstraint.constant)")
    }
0
fandro 18 मार्च 2017, 13:12
शायद viewDidLoad में, दृश्य अभी तक लेआउट नहीं है। हो सकता है कि आपको इसे layoutSubviews() या viewDidLayoutSubviews() में आजमाना चाहिए, यह निर्भर करता है कि आप क्या करना चाहते हैं।
 – 
Zico
18 मार्च 2017, 13:26
मैंने उस प्रश्न में जोड़ा जो मैंने कोशिश की लेकिन यह काम नहीं कर रहा है
 – 
fandro
18 मार्च 2017, 13:32
आपको क्या मूल्य मिलता है? मुझे यकीन नहीं है कि आपको layoutIfNeeded() को कॉल करने की आवश्यकता है क्योंकि दृश्य अभी "लेआउट" है।
 – 
Zico
18 मार्च 2017, 13:38
मुझे पहले ही 0.0 मिल गया है, यह पागल है
 – 
fandro
18 मार्च 2017, 13:39
क्या पेजर व्यू कंट्रोलर मूल्य को प्रभावित करता है?
 – 
fandro
18 मार्च 2017, 13:42

1 उत्तर

सबसे बढ़िया उत्तर

जब viewDidLoad(), दृश्य के सबव्यू अभी तक लेआउट नहीं होते हैं। अपना कोड viewDidLayoutSubviews() में डालने का प्रयास करें, या, इससे पहले कि आप बाधा के स्थिरांक की जांच करें, view.layoutIfNeeded() पर कॉल करें।

3
Jonny 18 मार्च 2017, 13:24
मैंने उस प्रश्न में जोड़ा जो मैंने कोशिश की लेकिन यह काम नहीं कर रहा है
 – 
fandro
18 मार्च 2017, 13:32
क्या आप अपने व्यू कंट्रोलर के संदर्भ के बारे में अधिक जानकारी प्रदान कर सकते हैं? मैंने एक रूट UIPageViewController के साथ एक प्रोजेक्ट बनाया, और कुछ व्यू कंट्रोलर को पेज के रूप में सेट किया। और... मैं हमेशा viewDidLoad() में सही बाधा स्थिरांक प्राप्त कर सकता हूं और view.layoutIfNeeded() को कॉल करने की कोई आवश्यकता नहीं है।
 – 
Jonny
18 मार्च 2017, 13:45
यह मेरा प्रोजेक्ट है: ?dl=0
 – 
Jonny
18 मार्च 2017, 13:47
आपकी मदद के लिए धन्यवाद जैसे मैंने कहा, मेरे व्यू कंट्रोलर कंटेनर व्यू में हैं शायद यह समस्या पैदा कर सकता है? पेजर कंटेनर दृश्य में एम्बेड किया गया है
 – 
fandro
18 मार्च 2017, 13:50
ठीक है, मैंने कोशिश की, और यह अभी भी काम करता है... क्या आपने IBOutlet को फिर से जोड़ने का प्रयास किया है?
 – 
Jonny
18 मार्च 2017, 14:02