0

我有这段代码很好用,但出于好奇,我该如何替换self这个方法中的单词?顺便说一句,这是一个导航应用程序,并且一直在尝试各种方法来替换它。

视图控制器1

  [self.navigationController popViewControllerAnimated:YES];

这是我尝试过的一种方法,

UIViewController *vc;

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

3 回答 3

5

无法更换self。因为在JAVA中self是一个keywordlike 。this keyword

简而言之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];
于 2013-03-22T05:20:14.990 回答
0

您错误地解释了下面的代码行。

[self.navigationController popViewControllerAnimated:YES];

这条线基本上是做什么的。它确实从 viewController 中删除了当前 NavigationViewControlelr 的(即 self.navitionController )堆栈

堆栈——基本上当你创建任何viewController和那个view Controller到.navigationControllernavigation controllerviewControllerStackViewController in stack's Way

关于你下面的代码行

 UIViewController *vc;

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

为什么你要创建 ViewController 从 navigationViewController 中删除。它会增加内存开销

和关于更换self. 你不能 self像上面所说的'iPatel'那样替换。

于 2013-03-22T05:37:48.807 回答
0

当您说要替换self为“一个对象或某物”时,self 一个对象。self 一词指的是函数所在类的当前实例。您无法替换self,因为那样您就不会引用 UIViewController 子类的当前实例。

为什么您的示例不起作用:

UIViewController *vc;

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

是因为它正在引用Viewcontroller1该类的新实例。弹出框不会出现,因为您没有将它添加到当前的视图控制器中;您正在将它添加到另一个从未显示的实例中。

于 2013-03-22T05:46:32.593 回答