2010-03-04 132 views
3

我有一個有很多行的UITableView。 它就像一個手風琴:http://docs.jquery.com/UI/Accordion 主細胞有子細胞,子細胞也有子細胞。所以這是一個三級的tableView。UITableView,如何捕捉動畫結束?

那麼,當用戶選擇一個單元格時,它會用行動畫擴展(或摺疊)子單元格。 但我需要設置tableView和scrollView的新大小。

我做的所有的東西在這個方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

問題: 當用戶點擊一個單元格,然後迅速點擊一個子一個,第二個動畫不這樣做,那麼的子單元等級2未被顯示。但是尺寸已經確定(考慮到二級子單元已經顯示)。

其實我玩的時間來處理這個......但它真的很爛。

這裏是我的代碼示例:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

// Checking with times (with 0,5 second interval in order to be sure that the previous animation is finished !) 

// Setting tableView & scollView heights 

[tableView beginUpdates]; 
if(position.isExpanded == YES) 
    [tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationBottom]; 
else 
    [tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationTop]; 
[tableView endUpdates]; 
} 

所以,我想抓住這個動畫的結尾。 或者,玩一種信號量(但我只有一個過程...) 任何想法來解決這個問題?

請記住,在我的回覆中,我真的是iPhone開發新手。

謝謝。

+0

重複的:http://stackoverflow.com/questions/7198633/how-can-i-tell-when-a-uitableview-animation-has-finished。那麼,也許這是一個重複的,但它有一個工作答案的好處。 – fishinear 2013-07-29 16:28:44

+0

重複和答案是非常糟糕的。任何人都會遇到這個問題shoudl看看[UITableView動畫回調](http://stackoverflow.com/questions/2802146/callback-for-uitableview-animations)和[UITableView行動畫持續時間和完成回調](http:/ /stackoverflow.com/questions/3832474/uitableview-row-animation-duration-and-completion-callback) – River2202 2015-10-25 13:42:37

回答

0

該動畫由類CAAnimation的實例控制。該類支持將被傳遞給此實例的代理的方法- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag。這些信息通常用於瞭解完成情況。

關於您的特殊要求,我會看看UIView類參考。有幾個任務處理該視圖的動畫 - 這是基類UITableView。因此,對UIView有效的任何內容都應該對錶格視圖有效。

+9

你如何訪問UITableView使用的CAAnimation實例? (爲了設置代表) – Sorig 2011-03-20 21:11:29

+0

我想知道與上面評論相同的東西,任何人都知道答案? – ElasticThoughts 2012-10-19 13:34:25

0

另外:

你可以通過檢查NSArray *animationKeys = [cell.layer animationKeys];並調用CAAnimation *animation = [cell.layer animationForKey:_a_key_];動畫。之後,您可以設置委託並按上述方式獲取完成情況。