मैं लगभग 100% यकीन है कि सूचकांक superViews subviews
संपत्ति के अंदर subview के सूचकांक के रूप में ही है हूँ: कुछ काम के तरीकों subviews पदानुक्रम यहाँ संभालने के लिए।
UIView * superView = .... some view
UIView * subView = .... some other view
[superView insertSubview:subView atIndex:index];
int viewIndex = [[superView subviews] indexOfObject:subView];
// viewIndex and index should be the same
मैं सिर्फ निम्न कोड के साथ इस परीक्षण किया है और यह काम करता है
UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
UIView* view3 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[self.view insertSubview:view1 atIndex:1];
[self.view insertSubview:view2 atIndex:2];
[self.view insertSubview:view3 atIndex:3];
NSLog(@"%d", [[self.view subviews] indexOfObject:view1]); // Is 1
NSLog(@"%d", [[self.view subviews] indexOfObject:view2]); // Is 2
NSLog(@"%d", [[self.view subviews] indexOfObject:view3]); // Is 3
[self.view bringSubviewToFront:view1];
NSLog(@"%d", [[self.view subviews] indexOfObject:view1]); // Is end of array
[self.view sendSubviewToBack:view1];
NSLog(@"%d", [[self.view subviews] indexOfObject:view1]); // Is 0
स्रोत
2010-02-26 17:22:15
मैं प्रश्न पोस्ट करने से पहले यह कोशिश कर रहा था। सबव्यूज़ सरणी में इंडेक्स वही रहते हैं :( –
वास्तव में, मेरा परीक्षण दिखाता है कि सबव्यूव सरणी में इंडेक्स 'लाने के बाद कॉल के बाद बदलता है' दृश्यव्यू टॉफ्रंट: ' –
आप बिल्कुल सही ब्रैंडन हैं, मेरे पास एक व्यू मैपर है जो' इंडेक्स को बदलना नहीं; दूसरी तरफ सबव्यूज़ सरणी उन्हें बदलती है। धन्यवाद। हालांकि मुझे यह स्वीकार करना चाहिए कि दस्तावेज़ कैसे इंडेक्स प्राप्त करने के बारे में अस्पष्ट हैं और क्या छोटे सूचकांक शीर्ष पर हैं या इसके विपरीत। –