繁体   English   中英

为什么self.view不可用

[英]Why self.view is not available

我在主视图控制器中有此代码,并且可以按我的要求正常工作。

loadingActionSheet = [[UIActionSheet alloc] initWithTitle:@"Posting To Twitter..."
                                                 delegate:nil
                                        cancelButtonTitle:@"Cancel"
                                   destructiveButtonTitle:nil 
                                        otherButtonTitles:nil];

[loadingActionSheet showInView:self.view];

我希望该代码可在项目的不同部分重用,因此我将其移动到了单独的文件中(基于UIView)。

我面临的问题是self.view在那里不可用,我不知道为什么,因为我在学习,我也不了解我所缺少的东西。

即使该代码位于其他地方,我该怎么做/添加/更改以使操作表显示在当前视图中?

听起来您还不太了解Objective-C和面向对象的编程。

self就像this在其他面向对象的语言。 也就是说,在执行方法时,方法内部的self变量是与实现该方法的Class或Subclass实例进行通信的一种手段。

如果self类没有view属性,则self.view将不会编译。 即使它确实具有view属性,也可能不是正确的视图!

我建议您阅读并重新阅读一下Objective-C指南 (我从事可可开发工作的头五年,我每年读一次,无论如何都是可可的前身)。

掌握了Objective-C之后,您需要考虑如何将应用程序组合在一起。 特别是如何将所有对象连接在一起。 或者,更具体地说,当您将应用程序分解为单独的文件时,这些文件定义了哪些类,以及这些类的实例如何在您的应用程序中组合在一起?

您的意思是这样吗?:

void actionSheetShownIn(UIView *target) {
  UIActionSheet *loadingActionSheet = [[UIActionSheet alloc] initWithTitle:@"Posting To Twitter..."
                                             delegate:nil
                                    cancelButtonTitle:@"Cancel"
                               destructiveButtonTitle:nil 
                                    otherButtonTitles:nil];

  [loadingActionSheet showInView: target];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM