1
我有下面的代碼裏面:UINavigationController的塊
[albumButton setAccessoryButtonPressed:^()
{
[[SoundEffectManager sharedSoundEffectManager] playSoundEffectForKey:kSoundEffectButtonPress];
AlbumDetailViewController* detailVC = [[[AlbumDetailViewController alloc] initWithNibName:@"AlbumDetailViewController" bundle:nil] autorelease];
[detailVC setPrice:[albumPrice stringValue]];
[detailVC setCoverImage:albumCover];
[detailVC setName:albumName];
[detailVC setDescription:albumDesc];
[detailVC setProductID:[NSString stringWithFormat:@"com.tunehopper.%@", albumID]];
[detailVC setComposer:composer];
[detailVC setMaxScore:maxScore];
for (NSString* key in songKeys)
{
NSDictionary* songDict = [albumSongs objectForKey:key];
NSString* songTitle = [songDict objectForKey:@"title"];
[[detailVC dataSource] addObject:songTitle];
}
//UINavigationController *nav = [[self.navigationController parentViewController] navigationController];
[self.navigationController pushViewController:detailVC animated:YES];
}];
我想從一個不同的viewController執行此塊。唯一不工作的是pushViewController。當我執行推送時,不會調用AlbumDetailViewController。我想知道我遇到的問題是否與執行塊時不再存在的self.navigationController有關。我曾假設該塊將使用運行時存在的任何當前視圖控制器導航控制器。這似乎並非如此。那麼,有沒有人有一些關於如何設置塊來在運行時調用detailViewController的指針。
這也取決於你如何調用這個塊。如果您將它傳遞給GCD以在後臺隊列上運行,則會出現問題,因爲您只應從主線程調用UIKit方法。 – Abizern 2012-03-28 00:15:11