相关疑难解决方法(0)

在Objective-C中声明和检查/比较(bitmask-)枚举

你知道在Cocoa中有这个东西,比如你可以创建一个UIView并做:

view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Run Code Online (Sandbox Code Playgroud)

我有一个UIView具有多个状态的自定义,我已经在enum这样定义:

enum DownloadViewStatus {
  FileNotDownloaded,
  FileDownloading,
  FileDownloaded
};
Run Code Online (Sandbox Code Playgroud)

对于每个创建的子视图,我设置它tag:subview1.tag = FileNotDownloaded;

然后,我有一个视图状态的自定义setter,它执行以下操作:

for (UIView *subview in self.subviews) {
  if (subview.tag == viewStatus)
    subview.hidden = NO;
  else
    subview.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)

我想做的是允许这样做:

subview1.tag = FileNotDownloaded | FileDownloaded;
Run Code Online (Sandbox Code Playgroud)

所以我subview1出现在我看来的两个状态.目前,由于|运算符似乎添加了两个枚举值,因此它不会出现在这两个状态中的任何一个状态中.

有没有办法做到这一点?

c cocoa enums objective-c bitmask

77
推荐指数
2
解决办法
3万
查看次数

标签 统计

bitmask ×1

c ×1

cocoa ×1

enums ×1

objective-c ×1