ios - actionSheet的subviews一直为空 为什么
大家讲道理
大家讲道理 2017-04-17 15:36:27
0
1
697
  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是可以拿到subview的,但後來拿不了了。
蘋果這樣做的目的是不想讓開發者去定義這些View。
所以說,不是呼叫subviews方法就一定可以拿到裡面的View的。

蘋果要做到這一點,我猜測有兩種方式:
1.根本沒有subview,哪些按鈕使用的是Layer或重繪。
2.重載這些類別的subviews方法讓它傳回空數組。 (這個可能性最大)

自訂的方式蘋果已經限制了,這可能比較折騰。
可以試試這個函式庫,支援自訂View:JGActionSheet

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板