2011-10-10 42 views
1

我想做到以下幾點:但是問題與pushViewController在主線程

[self.navigationController performSelectorOnMainThread:@selector(pushViewController:animated:) withObject:<#(id)#> waitUntilDone:NO]; 

我不知道如何在視圖控制器,並在這裏布爾動畫值傳遞?誰能幫我嗎?我的猜測是我在withObject中傳入了一個NSDictionary?

回答

4

超級方法(pushViewController:動畫:)不能重寫,所以你應該像下面的代碼。

[self performSelectorOnMainThread:@selector(pushMyViewController:) withObject:[NSDictionary dictionaryWithObjectsAndKeys:<#yourViewController#>,@"viewController", [NSNumber numberWithBool:YES], @"animated", nil] waitUntilDone:NO]; 

- (void)pushMyViewController:(NSDictionary *)info 
{ 
    [self.navigationController pushViewController:[info valueForKey:@"viewController"] animated:[[info valueForKey:@"animated"] boolValue]]; 
} 
0

你可能想要做一個方法來做這些事情。

[self.navigationController performSelectorOnMainThread:@selector(pushViewController:animated:) withObject:<#(id)#> waitUntilDone:NO]; 

將變爲:

[self.navigationController performSelectorOnMainThread:@selector(someMethod) withObject:<#(id)#> waitUntilDone:NO]; 

-(void)someMethod 
{ 
    //pushViewController:animated: //and other stuffs 
} 
+0

這種方法則需要的viewController,也是動畫或沒有,我怎麼通過它? – adit

+0

也someMethod將不得不在UINavigationController類內右?我必須實現一個類別來做到這一點 – adit

+0

或者他需要訪問navigationController,這不應該太難管理。 關於動畫。你可以通過屬性或全局控制它,就像傳遞它一樣簡單.. someMethod可以自己調用你想在performSelectorOnMainThread中實現的方法 –