【问题标题】:Access A UIImageView Outside Of Where It Was Declared访问声明位置之外的 UIImageView
【发布时间】:2014-05-05 16:53:30
【问题描述】:

我在一个名为 GameViewController.h 的文件中声明了一个 UIImageView (IBOutlet UIImageView *character;),但我不确定如何从另一个文件 CharacterSelectViewController.h 访问它。

得到它后我需要做的就是设置image。如何从另一个文件访问此 UIImageView

【问题讨论】:

    标签: ios objective-c oop properties uiviewcontroller


    【解决方案1】:

    首先,您需要获取当前显示的GameViewController 的现有实例。从CharacterSelectViewController 执行此操作的方式取决于它们之间的关系,您可能希望设置委托关系/导航视图控制器堆栈以找到正确的实例。

    拥有实例后,您只需访问该属性:

    gameViewController.character.image = ...;
    

    无论如何,委托类型关系通常比导航视图控制器层次结构更好。这可以是简单的直接关系,也可以是使用@protocol 的广义关系。

    如果GameViewControllerCharacterSelectViewController 呈现为模态,那么您可以使用

    GameViewController *gameViewController = (GameViewController *)self.presentingViewController;
    

    如果GameViewControllerCharacterSelectViewController 推入其导航控制器,那么您可以使用:

    NSArray *viewControllers = self.navigationController.viewControllers;
    GameViewController *gameViewController = (GameViewController *) viewControllers[viewControllers.count - 2];
    

    【讨论】:

    • 感谢 Wain 的快速回答。如何设置委托?我还没有这样做。
    • 但您可能只想设置一个直接引用(即向CharacterSelectViewController 添加一个属性并设置它)。同样,这取决于控制器之间的关系......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2021-05-22
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    相关资源
    最近更新 更多