首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入subView - iPhone

插入subView - iPhone
EN

Stack Overflow用户
提问于 2011-06-07 20:05:32
回答 4查看 118关注 0票数 0
代码语言:javascript
复制
- (void)viewDidLoad {

    BlueViewController *blueController = [[BlueViewController alloc] initWithNibName@"BlueView" bundle:nil];
    self.blueViewController = blueController; //blueViewController set to var above

    [self.view insertSubview:blueController.view atIndex:0];
    [blueController release];
    [super viewDidLoad];
}

不能很好地理解这段代码。为什么我插入的是子视图blueController而不是self.blueViewController

另外,如果我不使用self,会有什么不同。甚至不确定为什么使用self。我将其解释为将当前视图控制器的blueViewController属性设置为blueController实例,但我为什么要这样做呢?我正在阅读的这本书并没有详细解释这些事情。这几乎就是猴子做的事情。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-07 20:20:04

不能很好地理解这段代码。为什么我插入的是子视图blueController而不是self.blueViewController

由于您已经执行了赋值:

代码语言:javascript
复制
 self.blueViewController = blueController;

这两个变量是相同的,所以

代码语言:javascript
复制
 [self.view insertSubview:self.blueController.view atIndex:0];

和你发布的代码是一样的。

如果我不使用

,会有什么不同。甚至不确定为什么使用self。我将其解释为将当前视图控制器的blueViewController属性设置为blueController实例,但我为什么要这样做呢?我正在阅读的这本书并没有详细解释这些事情。这几乎就是猴子做的事情。

如果你没有赋值给self.blueController,那么你的变量就只是该函数的一个局部变量。通过拥有一个属性self.blueController并在其中存储一个值,您可以在类的所有选择器(函数)中使用该值。

检查代码,您将看到self.blueController还用于其他函数。例如,在某些情况下,您可能决定隐藏该子视图,或者想要删除它,等等。所有这些都只有在您有一个指向类函数可访问的控制器的指针时才能实现。

票数 0
EN

Stack Overflow用户

发布于 2011-06-07 20:08:51

如果引用的是类的对象,则使用self。

票数 0
EN

Stack Overflow用户

发布于 2011-06-07 20:14:29

在初始化变量时,我们必须使用self。这将使blueViewController retainCount递增到1。

self.blueViewController = blueController;

在插入时,您也可以同时使用这两种方法。结果将是相同的。

self.view insertSubview:blueController.view atIndex:0;

self.view insertSubview:self.blueController.view atIndex索引:0;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6264892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档