2014-02-19 74 views
0

我有一個subview內部下面的方法:viewController轉換完成後removeFromSuperview。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.delegate performSegueWithIdentifier:@"segueAdicionarRefeicaoSearch" sender:[NSString stringWithFormat:@"%@", self.arrayLabels[indexPath.row]]]; 
    // Remove from Superview 
    [self.view removeFromSuperview]; 
} 

如何處理此代碼發生的是performSegue動畫完成之前的觀點被刪除,視覺效果也不是那麼好。

我知道有一個解決方法是刪除的觀點是這樣的:

[self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.25f];

但我認爲這是太機械師選擇TimeInterval的動畫。有什麼不同,我可以使用?

我還可以在導航堆棧中獲得subview索引,並在下一個視圖到達viewDidAppear時將其刪除。但我認爲這會更加複雜。

任何想法?

+2

爲什麼你需要刪除它嗎?爲什麼不'viewDidDisappear:'? – Wain

+0

這是一個'subview',佔據了另一個'view'頂部的屏幕的一半。在轉到另一個視圖並返回之後,這個「子視圖」仍然存在。這就是爲什麼我認爲我需要刪除。不是嗎?或者我錯過了什麼?謝謝。 – Jorge

+0

如果不知道它是什麼子視圖,就說不清楚。它是否仍然基於需求?如果沒有,然後刪除它... – Wain

回答

2

根據視圖是什麼或爲什麼你需要刪除它,一個選項將是在- (void)viewDidDisappear:(BOOL)animated中調用它我不知道爲什麼你需要從控制器中刪除視圖,但這種方法絕對是在調用後動畫。

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 

    [self.whateverView removeFromSuperview]; 
} 

編輯: 根據您的迴應,你也可以做到這一點在viewWillAppear中:因爲它聽起來像你不想它,只有當您返回到您的viewController

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear]; 

    [self.whateverView removeFromSuperview]; 
} 
+0

這是一個'subview',佔據了另一個'view'頂部的屏幕的一半。在轉到另一個視圖並返回之後,這個「子視圖」仍然存在。這就是爲什麼我認爲我需要刪除。不是嗎?或者我錯過了什麼?謝謝。 – Jorge

+0

好吧,那麼它不會是self.view每說,但應該self.mycustomview或任何它被稱爲。你不想刪除viewControllers視圖 – Eric

相關問題