Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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 从it访问ViewController';s父类_Ios_Uiviewcontroller - Fatal编程技术网

Ios 从it访问ViewController';s父类

Ios 从it访问ViewController';s父类,ios,uiviewcontroller,Ios,Uiviewcontroller,我有很多ViewController,它们有一个共同的父类 @interface X_ViewController : ParentViewController { } 在ParentViewController中,我想运行一些代码,在ViewController本身上执行实际操作 特别是UIActionSheet。 在ParentViewController内部,self.view是错误的做法。 我怎么还能访问“child”(实际上是我自己对象的)视图呢?好吧,我认为这是不可能的。 您可以

我有很多ViewController,它们有一个共同的父类

@interface X_ViewController : ParentViewController 
{
}
ParentViewController
中,我想运行一些代码,在ViewController本身上执行实际操作 特别是
UIActionSheet
。 在
ParentViewController
内部,
self.view
是错误的做法。
我怎么还能访问“child”(实际上是我自己对象的)视图呢?

好吧,我认为这是不可能的。 您可以在不同的情况下访问
childViewController
,但不能访问此项

国际海事组织,你的做法是错误的。
您应该在您的
parentVC
中创建一些公共方法,并让其子级调用它们。反之亦然。

您可以将
self
转换为
X\u ViewController

if ([self isKindOfClass:[X_ViewController class]]) {
    [((X_ViewController *)self) doSomething];
}

但我不鼓励这样做。您使用子类是为了获得继承权,而不是反过来(养老金?)。

将您的孩子VC导入到您的父母中。(我可能会说这是非常不道德的)


在父对象中创建子VC的引用,然后调用您想要执行的方法

您想要执行什么?也许你制造了一个错误的问题。父母不应该对他的孩子一无所知。你能在这里粘贴代码吗:你想调用的父函数和子函数以及调用函数的位置?并将self作为参数传递给self?我希望self.view可以在基类代码中使用。你所做的是让你的
childVC
继承自
parentVC
。不能保证您的
父VC
和子VC同时存在。您必须确保它们存在,当它们确实存在时,您可以将它们视为同一级别的viewcontroller(我猜您没有使用presentViewController,对吧?)。然后,根据你的方法,你可以访问任何你想要的VC。视图只引用父母的视图。事实上。我希望self.view是我可以在基类代码中使用的东西,不幸的是答案是否定的。
self.view
UIView
的一个实例,而不是
UIViewController
,这意味着它是一个视图,而不是MVC模式中的控制器。如果您发现自己处于这种情况,那么您的设计可能有问题。更好的方法是修复它,而不是寻找解决办法。