[英]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.