iOS 通知代理執行代理方式時,代理為nil的解決辦法

來源:互聯網
上載者:User

標籤:

1.下面代碼是描述: 點擊Toolbar上的按鈕時,通知代理去調代理方法.
 1 - (void)didClickedToolbarBtn:(UIButton *)button 2 { 3      4     if ([self.delegate respondsToSelector:@selector(toolbar:didClickedButton:)]) { 5         [self.delegate toolbar:self didClickedButton:button.tag]; 6     } 7     self.selectButton.selected = NO; 8     button.selected = YES; 9     self.selectButton = button;10     11 }
2.不巧的是,此時delegate還沒指定,也就是說delegate=nil,具體情境如下:

1>假設有個控制器,在控制器的viewDidLoad方法裡執行個體化Toolbar,也就是調[ [ Toolbar alloc ] init ].在執行完init後才是 toolbar.delegate = self.

2>在Toolbar的init方法添加Toolbar的4個按鈕,[self addToolbarButtonWithTitle:@"xxx" andTag:枚舉類型].

3>要求預設點擊第1個按鈕,採用的方法是,在建立按鈕時,校正toolbar.subview的數量,當數量為1時,執行 [self didClickedToolbarBtn:button]

 1 - (void)addToolbarButtonWithTitle:(NSString *)title andTag:(QKToolbarButtonType)toolbarButtonType 2 { 3     QKToolbarButton *button = [[QKToolbarButton alloc]init]; 4     button.tag = toolbarButtonType; 5      6     [button setTitle:title forState:UIControlStateNormal]; 7      8     [button addTarget:self action:@selector(didClickedToolbarBtn:) forControlEvents:UIControlEventTouchDown]; 9 10     [self addSubview:button];11     12     if (self.subviews.count == 1) {13         [self didClickedToolbarBtn:button];14     }15 }
3.為了結局上文描述的delegate=nil的問題,可以採用下面的解決辦法,在代理的set方法中調相應的方法
1 - (void)setDelegate:(id<QKToolbarDelegate>)delegate2 {3     _delegate = delegate;4     QKToolbarButton *toolbarBtn = (QKToolbarButton *)[self viewWithTag:QKToolbarButtonTypeDefault];5     [self didClickedToolbarBtn:toolbarBtn];6     7 }

 

iOS 通知代理執行代理方式時,代理為nil的解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.