Dưới đây là một mẹo tiện dụng mà bạn có thể thực hiện để hỗ trợ gỡ lỗi AutoLayout của mình. Bạn có thể thêm thuộc tính name
của riêng mình vào UIView
qua danh mục và quá tải phương thức description
để bao gồm name
mới. Điều này không hoàn toàn cung cấp cho bạn một tên hiển thị trong thông tin gỡ lỗi AutoLayout, nhưng cho phép bạn dễ dàng po
một chế độ xem từ địa chỉ của nó và xem tên đã cho của nó.
Sau đó chỉ cần gán tên được áp dụng trong điều khiển điểm của bạn:
- (void)viewDidLoad {
[super viewDidLoad];
self.firstView.name = @"MyViewController.firstView";
self.secondView.name = @"MyViewController.secondView";
}
Bây giờ khi bạn nhìn thấy một cái gì đó như thế này:
<NSAutoresizingMaskLayoutConstraint:0x175086220 h=-&- v=-&- UIView:0x147533250.height == UIView:0x14760b4a0.height>
Bạn có thể chỉ po
các địa chỉ xem:
po 0x147533250
MyViewController.firstView <UIView: 0x147533250>
po 0x14760b4a0
MyViewController.secondView <UIView: 0x14760b4a0>
Đây là mã danh mục:
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
Xem ở đây http: // stackoverflow. com/questions/8295471/storyboard-doesnt-chứa-một-view-controller-với-identifier –
@Oleg này chỉ hoạt động cho ViewControllers. OP hỏi về các trường hợp của UIView theo ảnh chụp màn hình. – Fogmeister