Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 找出您来自哪个视图控制器_Ios_Iphone_Objective C_Uiviewcontroller - Fatal编程技术网

Ios 找出您来自哪个视图控制器

Ios 找出您来自哪个视图控制器,ios,iphone,objective-c,uiviewcontroller,Ios,Iphone,Objective C,Uiviewcontroller,我试图找出我来自哪个视图控制器。让我解释一下 我有一个viewController(位置viewController)。在viewcontroller A上有3个按钮(网站按钮、地图按钮、费率按钮)。当用户按下Rate按钮时,他们进入Rate viewcontroller。当他们从viewController返回时,我必须在viewController A(Place view controller)上/内部“做一些事情”。当用户按下“网站按钮”或“地图按钮”时,无需执行任何操作 有没有办法检查

我试图找出我来自哪个视图控制器。让我解释一下

我有一个viewController(位置viewController)。在viewcontroller A上有3个按钮(网站按钮、地图按钮、费率按钮)。当用户按下Rate按钮时,他们进入Rate viewcontroller。当他们从viewController返回时,我必须在viewController A(Place view controller)上/内部“做一些事情”。当用户按下“网站按钮”或“地图按钮”时,无需执行任何操作

有没有办法检查我刚从哪个viewcontroller来的

有人有什么建议吗


谢谢。

你可以通过授权来完成这项工作

您可以定义一个协议,例如,
RateViewControllerDelegate
RateViewController
将具有符合此协议的委托


您的
PlaceViewController
将符合此协议,该协议可能有一种方法,如
-rateViewControllerCompletedSomeThing
RateViewController
可以在完成时发送该方法。在该方法的
PlaceViewController
实现中,它可以解除/pop
RateViewController
,并在解除
RateViewController
后执行您想要执行的任何其他操作。

如果您打开一个模式视图控制器(presentViewcontroller),您可以使用视图控制器的“parentViewController”属性

如果是导航,则导航控制器在属性“viewController”中具有视图控制器堆栈


在这种情况下,最好使用协议,只需设置一个委托即可。

是的。
UIViewController
类声明了一个属性
presentingViewController
,该属性根据

如果接收此消息的视图控制器由 另一个视图控制器,此属性保存 他正在展示它。如果未显示视图控制器,但显示其中一个 它的祖先正在被呈现,这个属性持有这个观点 表示最近祖先的控制器。如果双方都不同意这个观点 控制器或其任何祖先均未呈现,此属性 零持有

UIViewController
子类中使用此属性时,您将希望引用如下属性:

UIViewController *oldVC = self.presentingViewController;

一种简单的方法是将类属性添加到(例如booldicomefromrate)。然后在Rate VC中添加如下代码。然后,可以在加载视图控制器A时检查该属性

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *targetVC = [segue destinationViewController];
        targetVC.didComeFromRate = YES;
}

你试过什么吗?那么NSNotification呢?我想他想要的是另一种方式,即当从PresentDVC返回PresentGVC时,PresentGVC想知道它刚刚完成了哪个VC的演示。aa和呼吸。如果将viewcontroller放置在navigationController中,则按此按钮可设置viewcontroller的速率。在这种情况下,self.presentingViewController能工作吗?@Joiningss不能,如果是这种情况,最好按照@Avi Tsadok的建议使用
parentViewController
。@0x7fffffff我写了一个测试演示,self.presentingViewController不能在导航中工作。而self.parentViewController是一种UINavigationController,因此self.parentViewController不能同时工作。Avi Tsadok没有建议在导航中使用parentViewController。@Joinings是正确的,但他确实建议使用它,我想给他适当的信任。