2016-03-07 71 views
1

我試圖將微調器添加到我已經在我的tableViewCell中定位的按鈕。但問題是微調顯示在tableViewCell之外。UIActivityIndi​​catorView內部TableView單元格

這是我implemeneted我的代碼裏面cellForRowAtIndexPath

myspinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

[myspinner setCenter:cell.like.center]; 
[cell.like addSubview:myspinner]; 

,當我點擊使用sender.tag

[myspinner startAnimating]; 

問題是微調工作,但不是我想要的。它在細胞外顯示。

UPDATE

隨着matt的回答是它沒有工作。 我也改變了我的代碼,如下所示。內部選擇器動作。 -(void) likeClicked:(UIButton*)sender

UIActivityIndicatorView *myspinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    [myspinner setCenter: CGPointMake(CGRectGetMidX(sender.bounds), 
             CGRectGetMidY(sender.bounds))]; 
    [sender addSubview:myspinner]; 
    [myspinner startAnimating]; 

回答

2

這種形式的代碼:

[myspinner setCenter:cell.like.center]; 

...從來都不是正確的。原因在於myspinner.center處於其超級視圖的座標 - 即座標爲cell.like。但cell.like.center superview的座標。因此,您將蘋果與橘子進行比較:您正在設定一個點,以另一個點位於完全不同的座標系中。那隻能是偶然的。

你想要做的是將myspinner.center設置爲其超級觀景點的中心界限。這些值位於相同的座標系(此處爲cell.like的座標系)。

[myspinner setCenter: CGPointMake(CGRectGetMidX(cell.like.bounds), 
          CGRectGetMidY(cell.like.bounds))]; 
+0

謝謝你做到了。而不是使用'cell.like.bounds.'當我點擊按鈕時,我在我的動作選擇器中使用了'sender.bounds'。 –

+1

當然,聽起來不錯。重點是瞭解座標系的性質。 – matt

+0

是的,我明白了。再次感謝。 :) –

0

,或者您可能要使用單元格的內容以獲得細胞的中心,

[myspinner setCenter:cell.contentview.center]; 

這將工作過。

相關問題