Cocoa에는 이런 일이 있다는 것을 알고 있습니다. 예를 들어 다음을 생성 UIView
하고 수행 할 수 있습니다 .
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
다음 과 같이 UIView
정의한 여러 상태 의 사용자 정의가 있습니다 enum
.
enum DownloadViewStatus {
FileNotDownloaded,
FileDownloading,
FileDownloaded
};
생성 된 각 하위보기에 대해 tag
다음을 설정합니다 .subview1.tag = FileNotDownloaded;
그런 다음 다음을 수행하는 뷰 상태에 대한 사용자 지정 세터가 있습니다.
for (UIView *subview in self.subviews) {
if (subview.tag == viewStatus)
subview.hidden = NO;
else
subview.hidden = YES;
}
그러나 내가하려는 것은 이것을 허용하는 것입니다.
subview1.tag = FileNotDownloaded | FileDownloaded;
그래서 내 subview1
관점의 두 가지 상태로 나타납니다. 현재는 |
연산자가 두 개의 열거 형 값을 추가하는 것처럼 보이기 때문에이 두 상태에 표시되지 않습니다 .
그렇게하는 방법이 있습니까?
(subview.tag == viewStatus)
은 나에게 잘못된 것 같습니다.((subview.tag & viewStatus) != 0x0)
정확히 일치하는지 확인하지 않으려면 이어야 합니다. 어떤 경우에는 처음에 비트 마스크가 필요하지 않고 평범한 오래된 열거 형 만 필요합니다. 내 대답의 후반부를 참조하십시오.