2013-03-22 65 views
0

我有這個代碼很好,但出於好奇,我怎麼能替換這個方法中的文字self?這是一個導航應用btw,並且一直在嘗試各種方法來代替它。什麼是最好的方式來取代自己

Viewcontroller1

[self.navigationController popViewControllerAnimated:YES]; 

這是一個方法我試過了,

UIViewController *vc; 

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil]; 
    [vc.navigationController popViewControllerAnimated:YES]; 
+0

你用什麼來代替這個詞?你想要達到什麼目的? – Kunal 2013-03-22 05:18:00

+0

用來取代'self'嗎? – viral 2013-03-22 05:18:11

+0

基本上看我是否可以替代它。 – 2013-03-22 05:18:49

回答

5

這是不可能取代self。因爲self在JAVA中是keyword類似thiskeyword

IN SHORT Apple/iOS不驗證任何類型的功能任何人都可以更改它。


         **EDIT** 

從代碼:

UIViewController *vc; 

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil]; 
    [vc.navigationController popViewControllerAnimated:YES]; 

用於創建Viewcontroller1對象,並導航到另一個的viewController寫爲

Viewcontroller1 *objVC = [[Viewcontroller1 alloc] init]; 
[self.navigationController pushViewController: objVC animated:YES]; 
,最好的辦法
+0

所以,沒有替代品?因爲如果我執行我的第二塊代碼沒有任何反應。但是我的第一塊代碼很好用。 – 2013-03-22 05:22:55

+0

@ FelixJones-檢查我編輯的:) – iPatel 2013-03-22 05:34:29

0

您錯誤地解釋下面的代碼行。

[self.navigationController popViewControllerAnimated:YES]; 

這條線基本上是什麼。它不從的viewController去除形成電流NavigationViewControlelr的(即self.navitionController)堆棧

基本上當你創建stack--任何viewControllerview ControllernavigationController,然後navigation controller添加根據StackviewController或者可以說管理ViewController in stack's Way

和關於你的下面的代碼行

UIViewController *vc; 

vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil]; 
[vc.navigationController popViewControllerAnimated:YES]; 

爲什麼ü創建視圖控制器刪除形成navigationViewController。它會造成內存開銷

和關於替換self。您不能將self更換爲上述iPatel。

0

當你說你想用「某物體或某物」代替self時,self的一個對象。 self這個詞指的是函數所在類的當前實例。您不能替換self,因爲那樣您不會引用UIViewController子類的當前實例。

爲什麼你的例子不工作:

UIViewController *vc; 

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil]; 
    [vc.navigationController popViewControllerAnimated:YES]; 

是因爲它是引用Viewcontroller1類的新實例。彈出窗口不會出現,因爲您沒有將其添加到當前的視圖控制器;您將它添加到從不顯示的另一個實例。

相關問題