我經常做這樣的事情:Objective-C的forwardInvocation:
CoolViewController *coolViewController = [[CoolViewController alloc] init];
[self.navigationController pushViewController:coolViewController animated:YES];
[coolViewController release];
我將如何,在UINavigationController
類別,覆蓋forwardInvocation:
,使我可以只而不是做:
[self.navigationController pushCoolViewControllerAnimated:YES];
請在您的答案中包含相關代碼,而不僅僅是解釋。謝謝!
隨意評論這是否是良好的做法。我也是爲了教育目的而問這個問題,但是在我看來,在這種情況下,代碼簡化可能超過了處理時間的不明顯(正確的)成本。另外,我來自Ruby背景,喜歡使用動態編程來簡化事物,例如Rails中的動態查找器(例如
find_by_name
)。如果您可以實現
pushCoolViewControllerAnimated:withBlock
,並在初始化視圖控制器後調用該塊,允許我在創建的視圖控制器上設置某些實例變量,則爲獎勵點。
更新:我只記得ARC即將推出。因此,這個具體的例子可能並沒有那麼有用,但仍然是一個很好的練習/例子,可以在其他情況下使用,例如,核心數據動態查找器&傳遞一個塊來配置NSFetchRequest
。
「請填寫完整的代碼,而不只是一個解釋。」這不是Stack Overflow的意義。 – 2011-07-07 17:21:19
「獎勵積分」?那麼賞金在哪裏呢? – Eimantas
爲什麼您認爲您需要重寫'forwardInvocation:'而不是在'UINavigationController'的類別中創建'pushCoolViewControllerAnimated:'方法? –