view.tag仅存储NSInteger Value.
那么,如何用NSString Value识别每个视图?
不可用?
一些例子:
view0.stringTag = @"basic";
view1.stringTag = @"advanced";
Run Code Online (Sandbox Code Playgroud)
Nik*_*uhe 15
没有stringTag财产UIView.如果您需要执行此类操作,可以使用类别UIView并将标记存储在关联对象中:
@interface UIView (StringTagAdditions)
@property (nonatomic, copy) NSString *stringTag;
@end
@implementation UIView (StringTagAdditions)
static NSString *kStringTagKey = @"StringTagKey";
- (NSString *)stringTag
{
return objc_getAssociatedObject(self, kStringTagKey);
}
- (void)setStringTag:(NSString *)stringTag
{
objc_setAssociatedObject(self, kStringTagKey, stringTag, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
@end
Run Code Online (Sandbox Code Playgroud)
小智 7
if use ARC
#import "UIView.h"
#import <objc/runtime.h>
@implementation UIView (StringTagAdditions)
static NSString *kStringTagKey = @"StringTagKey";
- (NSString *)stringTag
{
return objc_getAssociatedObject(self, CFBridgingRetain(kStringTagKey));
}
- (void)setStringTag:(NSString *)stringTag
{
objc_setAssociatedObject(self, CFBridgingRetain(kStringTagKey), stringTag, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
@end
Run Code Online (Sandbox Code Playgroud)
不,你不能使用字符串.如果您的目标是代码可读性,则可以使用枚举.但是,请务必从1开始枚举,因为0是所有视图的默认标记:
typedef enum {
vtBasic = 1,
vtAdvanced
} ViewType;
...
view0.tag = vtBasic;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5322 次 |
| 最近记录: |