Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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_Objective C_Uiview_Superview - Fatal编程技术网

访问当前视图的父视图-iOS

访问当前视图的父视图-iOS,ios,objective-c,uiview,superview,Ios,Objective C,Uiview,Superview,当我想访问当前UIView的父UIView时,我在当前UIView中声明父UIView的对象,并通过将父UIView对象分配给当前视图的对象属性来访问它 有没有办法摆脱这种情况,直接调用父视图的方法或属性 我还尝试了(parentView*)self.view.superview,但没有帮助 它在调用此对象的函数时出错 [UIVIew unrecognized selector...... 如果您直接从UIView(而不是UIViewController)调用它,那么它应该是self.supe

当我想访问当前
UIView
的父
UIView
时,我在当前
UIView
中声明父
UIView
的对象,并通过将父
UIView
对象分配给当前视图的对象属性来访问它

有没有办法摆脱这种情况,直接调用父视图的方法或属性

我还尝试了
(parentView*)self.view.superview
,但没有帮助

它在调用此对象的函数时出错

[UIVIew unrecognized selector......

如果您直接从
UIView
(而不是
UIViewController
)调用它,那么它应该是
self.superview
,而不是
self.view.superview

@Naveed:这是您可以用于任何视图(无论是父视图还是子视图)的常用代码,只需更改要按下的按钮名称和要转到的视图名称。例如,在“上一步”按钮上,按u想进入“库”视图,然后编写此代码-

-(IBAction)backButtonPressed:(id) sender
 {
        llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil];
    libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:libraryview animated:YES]; 
    [libraryview release];
 }

请告诉我您的问题是否已解决。

我认为您希望从视图中调用viewcontroller的方法,该方法已添加到viewcontroller的视图中

现在有两个选项,或者设置视图控制器视图的委托,然后通过[delegate performSelector:]方法调用视图控制器的方法

另一种方法是访问视图的superview,然后获取其控制器。你不能直接这样做,因为如果你能这样做的话,它将破坏MVC的全部目的

但是,仍然有一条出路,给你:-


希望,这对你有帮助

它是UIViewController。但我想它不应该也适用于UIView,因为对象是相同的,两者都是UIView注意,在ViewDidLoad中返回nil。它只有在视图中和视图之后才显示可用。非常感谢您的帮助Archana。实际上我的问题是我不想看名字。我想让它充满活力。谢谢