我在情节提要中的对象没有与代码正确链接

Posted

技术标签:

【中文标题】我在情节提要中的对象没有与代码正确链接【英文标题】:My objects in storyboard don't link correctly with the code 【发布时间】:2012-06-07 16:15:58 【问题描述】:

我正在尝试在我的应用程序中使用情节提要。我开始很好,我添加了两个视图控制器,带有一个从第一个到第二个的按钮。 问题出在第二个视图控制器中:我在其上添加并与代码链接的对象不起作用。当我在视图控制器代码中设置断点时,'self.property' 设置为 nil,而它应该由情节提要实例化。

我已经找了几个小时的答案,但我真的不明白这个问题,因为其余的似乎都很好。

我试图在代码中编写属性(强/非原子、非原子/保留甚至弱/非原子),将对象直接链接到代码,以便它自动创建属性,但我从来没有得到任何其他东西比带有断点的“nil”。

viewController.h:

@interface NMLoadingViewController : UIViewController

    __weak IBOutlet UIProgressView *imageProcessingProgressView;

@property (weak, nonatomic) IBOutlet UIProgressView *imageProcessingProgressView;

@end

.m:

@synthesize imageProcessingProgressView;

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    // Custom initialization
    NSLog(@"INIT.");

(其他一些不相关的代码)

如果我将断点设置为“INIT”。行,我的 imageProcessingProgressView 为零。我看不出原因,我想我错过了一个非常小的细节......

(请注意,我已经尝试过对其他对象进行此操作,例如 UILabel,但它也不起作用。奇怪的是,当我有两个对象时,其中一个对象的地址不是 nil,但它仍然被损坏并且没有显示正确的对象。)

编辑:白费了很多麻烦...问题在于 XCode 中的变量视图,它将我的变量显示为“nil”,而日志显示了一个正确的对象...

【问题讨论】:

【参考方案1】:

删除这个...


    __weak IBOutlet UIProgressView *imageProcessingProgressView;

...并使属性变得强大。

将您的日志消息更改为...

NSLog(@"INIT: %@", self.imageProcessingProgressView);

...看看你是否还有问题。如果你这样做了,那么再看看你的故事板连接。

【讨论】:

嗯...最后错误来自控制台:我看到我的imageProcessingProgressView的地址为零,但是日志给出了正确的对象...看来XCode有些麻烦,不是我第一次看到这个:/谢谢,至少我知道这只是变量视图有问题。 但是,在另一个函数中,我尝试设置进度条的值,但它没有显示出来:[self.imageProcessingProgressView setProgress:[[notification object] floatValue]*100 animated:NO]; (浮点值是正确的,因为我记录了它。)是否有任何其他函数可以调用以在屏幕上显示此更改? (如果答案很快。) 别在意最后一个问题,我找到了答案!感谢您的帮助。 并且(对多个 cmets 感到抱歉),请注意 __weak 的东西并且一切正常(这非常棒,因为当我将对象链接到代码时,它是 XCode 自动写给我的代码!) .【参考方案2】:

确保 NMLoadingViewController 是您的 viewController 上的类

【讨论】:

是的,视图控制器对象和类之间的链接是正确的,因为它会停止到类代码中设置的断点。 嗯...看看我对 Phillip Mills 的回答,终于成功了,但我的变量视图搞砸了...不过谢谢。【参考方案3】:

首先尝试@Eric 的答案,因为我相信这是真正的问题。

此外,请确保您实际上是在使用界面构建器将控件挂钩回视图控制器。这是通过将一条线从控件拖回视图控制器的属性来完成的。

【讨论】:

正如对 Eric 的回答,我很确定视图控制器的链接没问题;关于另一点,我已经使用界面构建器将进度视图拖到了我的视图控制器中;然后我将进度视图中的一行(右键单击/拖动)拖到 .h 文件中,该文件添加了我在帖子中编写的代码。 嗯...看看我对 Phillip Mills 的回答,终于成功了,但我的变量视图搞砸了...不过谢谢。

以上是关于我在情节提要中的对象没有与代码正确链接的主要内容,如果未能解决你的问题,请参考以下文章

UIView (或 UILabel ?)与情节提要中另一个 View 的链接

将 XIB 中的按钮链接到情节提要中的视图控制器

以编程方式添加的视图对象未显示在情节提要中

将子视图控制器链接到情节提要中的父视图控制器

如何连接故事板中的原型单元?

为啥带有约束的情节提要对象在运行时无法正确显示?