【问题标题】:Using the same NIB with multiple View Controllers对多个视图控制器使用相同的 NIB
【发布时间】:2011-03-17 01:08:07
【问题描述】:

基本上,我想使用一个 nib 文件和视图控制器作为我计划多次创建的视图的模板。这个笔尖将有几个标签和自定义视图。 我的想法是,我将遍历一个对象数组,并为每个对象创建一个此控制器的实例,并为数组中的对象设置一个属性。

目前这一切都很好,除了一件事 - 当我调用 setStringValue 时标签不会更新:!!!

我正在使用视图控制器代码中的方法进行更改,但它不起作用,我猜测 IBOutlet 没有正确连接,这很奇怪,因为自定义视图正在连接完美。

有什么想法吗?

【问题讨论】:

    标签: objective-c cocoa nsview iboutlet nsviewcontroller


    【解决方案1】:

    在 awakeFromNib 上设置断点并在调试器中查看标签出口的值是什么。在调用 awakeFromNib 之前,所有插座都应该已连接。如果它仍然为零,那么你就有答案了。调用 setStringValue: on nil 完全是“无”。在这种情况下,您没有正确绑定插座,或者您曾经正确绑定过它,后来更改了名称,在这种情况下,Xcode4 或界面生成器中应该有一个黄色警告三角形,表明有问题;但是它不会阻止您的应用程序构建或运行,出口只会在对象创建后保持其初始值(即 nil)。

    【讨论】:

      【解决方案2】:

      当你分配你的 NSViewControllers 时,只需用 NIB 的名字初始化:

      - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
      

      【讨论】:

        【解决方案3】:

        感谢您的回复,他们很有帮助,但并不完全符合我的意思。 我最终通过创建一个空的 NIB 并用自定义的 NSView 和一些其他控件填充它来解决它。我为这些控件创建了一个带有 IBOutlets 的 NSView 子类,并将自定义视图的标识设置为我在界面生成器中的子类。 每次我想绘制它的技巧是在我的子类中创建一个类方法,该方法将加载 nib 并以我想要的方式返回视图设置。

        代码如下:

        +(id)todoViewFromNibWithFrame:(NSRect)frameRect todoList:(TodoList *)aTodoList
        {
            NSNib *todoViewNib = [[NSNib alloc] initWithNibNamed:@"TodoView" bundle:nil];
            NSArray *objects = nil;
        
            id todoView = nil;
        
            [todoViewNib instantiateNibWithOwner:nil topLevelObjects:&objects];
            for (id object in objects) {
                if ([object isKindOfClass:[self class]]) {
                    todoView = object;
                    [todoView setTodoList:aTodoList];
                    break;
                }
            }
        
            [todoViewNib release];
            return todoView;
        }
        

        再次感谢您的回复! 史蒂夫

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-06
          • 1970-01-01
          • 1970-01-01
          • 2020-06-24
          • 2019-01-08
          • 2013-12-28
          相关资源
          最近更新 更多