0

免责声明:我编写的程序有效。我只需要帮助理解它。

今天我刚开始学习 XCode 和 Objective-C。我有大量的 Java 经验,我必须承认这是非常不同的。我目前正在关注一本让我们处理故事板上的两个场景的书。Main View Controller SceneFlipside View Controller Scene。_

在主要场景中,我有一个label outlet说 Hello World 的场景。它的名字是标签。在反面场景中,我有一个text outlet. 当用户从反面场景翻转到主场景时,文本出口中的文本将应用于标签出口。因此,如果我在反面输入 Hello StackOverflow,然后翻转它,我将在主场景中看到 Hello StackOverflow。

我们通过转到控制翻转并位于主场景 .m 类中的方法并添加此代码来做到这一点。

self.label.text = controller.labelText.text;

谁能解释一下这段代码?我知道 label 和 labelText 是我的名字。而文本正在寻找文本。但是我不知道 self 和 controller 是从哪里来的,书中也没有解释。谢谢你。

编辑

这是函数标题中具有控制器的函数的完整代码。我不明白这种方法发生了什么。任何解释都会很棒。

- (void)flipsideViewControllerDidFinish:(HWFlipsideViewController *)controller
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    else
    {
        [self.flipsidePopoverController dismissPopoverAnimated:YES];
        self.flipsidePopoverController = nil;
    }

    self.label.text = controller.labelText.text;    
}
4

2 回答 2

1

self 是java this指针,因此指向您的对象

text 是一个属性,将是getText()

所以 self.label.text 是 this.getLabel().getText() 但因为它设置text=something 它是 setText!

=> java-bean 风格的 getter 和 setter

控制器可能是一个局部变量。作为参数传递给方法或者它是 this 实例的对象上的成员变量


所以会的

this.getLabel().setText(controller.getLabelText().getText());

this = 你所在的对象和我认为的主要视图

控制器是翻转视图

“覆盖”将我们标签的字符串设置为控制器的文本字段字符串

于 2012-11-13T22:45:08.200 回答
0

您描述了,您处于控制翻转的上下文中。所以第二个控制器的实例(名为controller)必须在那里可用。所以你可以参考一下。

self是,正如 Xono 在评论中所说的那样,它已经是指向当前对象的指针,就像this在 java 中一样。

于 2012-11-13T22:38:13.673 回答