2012-10-18 15 views
21

(मास्टरिंग ऑटो लेआउट के लिए उत्तम आचरण) WWDC 2012 से एक बात के दौरान प्रस्तोता ने कहा कि आप ऑटो लेआउट को दूर करने में सहायता करने के लिए Xcode में एक UIView पहचानकर्ता सेट कर सकते हैं कि:ऑटो लेआउट डीबग करने के लिए एक्सकोड 4.5/आईओएस में यूआईवीव के पहचानकर्ता को कैसे सेट करें?

Identifier for UIView

यह एक वास्तव में की तरह लगता है अच्छा विचार है, लेकिन मेरे आईओएस प्रोजेक्ट के लिए एक्सकोड 4.5.1 में, कोई तरीका नहीं है कि मैं UIView की पहचान सेट करने के लिए देख सकूं।

मैं कैसे Xcode 4.5.1 में एक UIView की पहचान स्थापित कर सकते हैं? यदि आईओएस परियोजनाओं में यह संभव नहीं है, तो मैं वही कार्यक्षमता कैसे प्राप्त कर सकता हूं?

+1

देखें यहाँ http: // stackoverflow। com/प्रश्न/8295471/स्टोरीबोर्ड-में-युक्त-ए-व्यू-कंट्रोलर-पहचानकर्ता –

+0

@ ओलेग यह केवल व्यू कंट्रोलर के लिए काम करता है। ओपी स्क्रीनशॉट के अनुसार UIView के उदाहरणों के बारे में पूछ रहा है। – Fogmeister

उत्तर

-4

Identifier के बजाय, Storyboard आईडी फ़ील्ड का उपयोग करें। यह समान हे।

+0

विचारों के लिए कोई स्टोरीबोर्ड आईडी नहीं है, केवल देखने के नियंत्रकों के लिए –

2

दुर्भाग्यवश, ऐसा करने का कोई तरीका नहीं प्रतीत होता है। मैंने लगभग सबकुछ भरने की कोशिश की है, और कुछ भी काम नहीं किया है। न तो बहाली आईडी, न ही सुलभता लक्षणों पर इसका कोई असर पड़ता है। यदि आप स्क्रीनशॉट देखते हैं तो आप देखेंगे कि वास्तव में वह एक NSView सेट कर रहा है, जिसमें पहचानकर्ता संपत्ति है।

4

लगते पहचानकर्ता तरह ही उपलब्ध पर NSView केवल मैक OSX में है। यह आईओएस में UIView पर उपलब्ध नहीं है।

खराब बाधा या बाधाओं को ढूंढें।

किसी विशेष दृश्य को प्रभावित करने वाली बाधाओं को प्राप्त करने के लिए, बाधाओं का उपयोग करेंफेक्चरिंगआउटआउटऑरेंटेशन:। फिर आप डीबगर में बाधाओं का निरीक्षण कर सकते हैं। वे दृश्य प्रारूप नोटेशन का उपयोग कर मुद्रित हैं। अपने विचार पहचानकर्ता (पहचानकर्ता को देखने के (NSView)) है, तो वे विवरण में पहचानकर्ता का उपयोग करके प्रिंट आउट, इस तरह:

यहाँ में वर्णित है: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/AutolayoutPG/Articles/debugging.html

1

नहीं काफी जवाब आप देख रहे थे, लेकिन क्या उपयोगी है डिबगर में कुछ इस तरह कर रही है:

expr [(UIButton*)0x12345 setBackgroundColor:[UIColor purpleColor]] 

यह दृश्य की पहचान करने में मदद करता है। हालांकि इसे प्रभावी होने के लिए डीबगर पर चलाने के लिए सुनिश्चित करें।

0

यहां एक आसान चाल है जो आप अपने ऑटोलाउट डीबगिंग में सहायता के लिए कर सकते हैं। आप अपनी name संपत्ति को UIView पर किसी श्रेणी के माध्यम से जोड़ सकते हैं, और अपने name को शामिल करने के लिए description विधि को अधिभारित कर सकते हैं। यह आपको ऑटोलाउट डीबग जानकारी में एक दृश्यमान नाम नहीं देता है, लेकिन आपको आसानी से po अपने पते से एक दृश्य देखने देता है और उसका नाम देखता है।

तो बस आपके विचार नियंत्रक में लागू नाम आवंटित:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.firstView.name = @"MyViewController.firstView"; 
    self.secondView.name = @"MyViewController.secondView"; 
} 

अब जब आप कुछ इस तरह देखें:

<NSAutoresizingMaskLayoutConstraint:0x175086220 h=-&- v=-&- UIView:0x147533250.height == UIView:0x14760b4a0.height> 

आप कर सकते हैं बस po दृश्य पते:

po 0x147533250 
MyViewController.firstView <UIView: 0x147533250> 
po 0x14760b4a0 
MyViewController.secondView <UIView: 0x14760b4a0> 

यहां श्रेणी कोड है:

UIView + Name.h

#import <UIKit/UIKit.h> 

@interface UIView (Name) 

@property (strong, nonatomic) NSString *name; 

- (NSString *)description; 

@end 

UIView + Name.m

#import "UIView+Name.h" 
#import <objc/runtime.h> 

@implementation UIView (Name) 

- (NSString *)name { 
    return objc_getAssociatedObject(self, @selector(name)); 
} 

- (void)setName:(NSString *)name { 
    objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
} 

- (NSString *)description { 
    return [NSString stringWithFormat:@"%@ %@", self.name, [super description]]; 
} 

@end 
13

UIView पर accessibilityIdentifier स्थापना काम कर देता है। एक्सकोड 6.4, आईओएस 8.4 पर परीक्षण किया गया।

1

कोड में स्थापना, मेरे लिए काम किया:

कोड:

imageView.accessibilityIdentifier = "profileImageView" 

उत्पादन:

<NSLayoutConstraint:0x17028eec0 profileImageView.width == 40 (active, names: profileImageView:0x10fd48110)> 
संबंधित मुद्दे