ios - actionSheet的subviews一直为空 为什么
大家讲道理
大家讲道理 2017-04-17 15:36:27
0
1
747
  UIActionSheet *myActionSheet = [[UIActionSheet alloc]
                                    initWithTitle:nil
                                    delegate:self
                                    cancelButtonTitle:@"取消"
                                    destructiveButtonTitle:nil
                                    otherButtonTitles: @"分享",@"删除",@"举报",nil];
    [myActionSheet showInView:self.view];
 
}

-(void)willPresentActionSheet:(UIActionSheet *)actionSheet{
    NSLog(@"actionSheet.subviews:%@",actionSheet.subviews);
    for (UIView *view in actionSheet.subviews) {
        if (view.tag == 2) {
            UIButton *button = (UIButton *) view;
            //改变背景
            [button setBackgroundImage:[button backgroundImageForState:UIControlStateHighlighted] forState:UIControlStateNormal];
            //改变颜色
            [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            //btn的选择状态,否则选择后不变背景
            [button setSelected:YES];
        }
    }
}

打印出来`actionSheet.subviews:(
)`
为什么为空啊 明明有3个按钮

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
小葫芦

UIAlertView는 하위 뷰를 얻을 수 있었지만 나중에는 더 이상 불가능했습니다.
Apple의 목적은 개발자가 이러한 뷰를 정의하지 못하도록 하는 것입니다.
따라서 subviews 메서드를 호출하면 확실히 View를 내부로 가져올 수 있습니다.

Apple이 이를 수행하려면 두 가지 방법이 있을 것 같습니다.
1. 하위 뷰가 전혀 없고, 어떤 버튼이 레이어를 사용하거나 다시 그리기를 사용하는지.
2. 빈 배열을 반환하도록 이러한 클래스의 하위 뷰 메서드를 오버로드합니다. (이것이 가장 가능성이 높습니다)

Apple은 사용자 정의 방식을 제한했기 때문에 다소 까다로울 수 있습니다.
사용자 정의 보기를 지원하는 이 라이브러리를 사용해 볼 수 있습니다: JGActionSheet

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿