我有这个代码效果很好,但出于好奇,如何在此方法中替换单词self
?这是一个导航应用程序btw,并尝试各种方法来替换它。
Viewcontroller1
[self.navigationController popViewControllerAnimated:YES];
这是我尝试的一种方法,
UIViewController *vc;
vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
[vc.navigationController popViewControllerAnimated:YES];
答案 0 :(得分:5)
无法替换self
。因为self
与JAVA中的keyword
this
类似keyword
。
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];
答案 1 :(得分:0)
你错误地解释了下面的代码行。
[self.navigationController popViewControllerAnimated:YES];
这一行基本上是做什么的。它确实从viewController表单中删除了当前的NavigationViewControlelr(即self.navitionController)Stack
stack--基本上当您在viewController
中创建任何view Controller
和navigationController
时,navigation controller
根据{{1}添加viewController
或者可以说管理Stack
。
关于您的以下代码行
ViewController in stack's Way
为什么你要创建从NavigationViewController中删除的ViewController。它会带来内存开销
并关于替换 UIViewController *vc;
vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
[vc.navigationController popViewControllerAnimated:YES];
。你不能将self
替换为上面讲述的“iPatel”。
答案 2 :(得分:0)
当您说要将self
替换为“某个对象或某物”时,self
是一个对象。单词self指的是函数所在类的当前实例。您不能替换self
,因为那样您就不会引用UIViewController子类的当前实例。
为什么你的例子不起作用:
UIViewController *vc;
vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
[vc.navigationController popViewControllerAnimated:YES];
是因为它引用了Viewcontroller1
类的新实例。弹出窗口不会出现,因为您没有将它添加到当前的viewcontroller;您将它添加到另一个从未显示的实例。