【问题标题】:How can I access various UIViews within a Nib, programmatically?如何以编程方式访问 Nib 中的各种 UIView?
【发布时间】:2012-01-01 15:40:13
【问题描述】:

首先,我是 Objective-C/iOS 开发的超级新手,事实上,这个问题是针对我的第一个测试项目的。此外,我来自 C#/WinForms 背景,因此我进入 iOS 开发时对用户界面设计和应用程序状态具有某些先入为主的概念。请多多包涵,帮我解惑。

我刚刚创建了我的第一个 iOS 应用程序项目,其中包含一个单一视图。我允许 Xcode 通过 Single View 项目向导为我创建所有文件。完成后,我打开了我的新应用程序,在设计器中打开了一个 UIView Nib 文件,然后我将三个滑块放到了视图上。

这个应用程序的预期目的非常简单——每个滑块对应于与我的视图背景颜色相关的 R、G 或 B 值。

我已经知道如何设置视图的背景,但我不知道如何访问每个滑块对象的值。是的,我可以为每个滑块连接并响应 IBAction,但我的计划是每次滑块的值发生变化时,我希望 IBAction 调用一个重构方法来访问所有三个滑块的值和然后根据与每个视图关联的值设置视图背景颜色。

如何访问滑块的值?具体来说,如何访问通过将滑块拖放到 Nib 设计器窗口中创建的滑块的值?我已经看到解释如何以编程方式将UISlider 添加到您的UIView 然后访问该值的代码,但是您如何访问添加到 Nib 的UISlider 的值,我假设它将自动在编译时“连线”?

希望这是因为?如果我遗漏了中间步骤或关键概念,请告诉我。

【问题讨论】:

    标签: iphone ios xcode cocoa-touch uikit


    【解决方案1】:

    您创建 UISlider 变量/属性并将它们设为 IBOutlets:

    @property (nonatomic, retain) IBOutlet UISlider* yourSlider;
    

    您在 .m 文件中合成它并在界面生成器中连接 IBOutlet。然后 yourSlider 指针是对您连接到的对象的引用。请注意,它只会与 UIViewController 的视图一起加载,因此在调用 viewDidLoad 之前将为零。您还必须将其设置回 nil

    self.yourSlider = nil;
    

    在您的 viewDidUnload 方法中(以便它被释放)。在 Xcode 4 中,您可以方便地在一个操作中完成上述所有步骤(参见 What's new in XCode 4 的“Interface Builder is Built-in”)

    【讨论】:

      【解决方案2】:

      类似于 CTRL+从 UISlider 拖动到 .m 文件以创建 IBAction,您可以 CTRL+将 UISlider 从 .nib 设计器拖动到关联的 .h 文件并让它为您创建一个属性。然后,从您的 .m 文件中,您可以访问 self.mySlider(或任何您命名的属性)。

      this page 上有一段视频专门展示了与 UISlider 的绑定。

      【讨论】:

        【解决方案3】:

        另一种方法是使用视图的标记属性。

        @property(nonatomic) NSInteger tag
        
        - (UIView *)viewWithTag:(NSInteger)tag
        

        您可以在界面构建器中设置视图的标记属性,然后在控制器中引用该视图。

        UIView *myViewFromTag = [self.view viewWithTag:theNumberYouSetInIB];
        

        一般来说,最好还是坚持使用 IBOutlets。但是,在某些情况下使用标签更有意义。

        祝你好运!

        【讨论】:

          猜你喜欢
          • 2017-05-15
          • 1970-01-01
          • 1970-01-01
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          • 2015-09-03
          • 2020-05-05
          • 1970-01-01
          相关资源
          最近更新 更多