【问题标题】:Object from class in other class to access UIView iOS Objective-c来自其他类中的类的对象以访问 UIView iOS Objective-c
【发布时间】:2017-05-04 10:22:17
【问题描述】:

ClassA *a = [[ClassA alloc] initWithNibName:@"classA" bundle:nil]; a.viewInClassA.hidden = NO;

当我运行此代码时,a.viewInClassA.hidden = NO 不会产生任何影响,请帮助

【问题讨论】:

  • a.viewInClassA 默认是隐藏的吗?并且插座已连接,或者如果以编程方式创建,则将其添加到查看a
  • 是隐藏在 storyBoard 中,并且插座已连接。
  • 这个视图的 alpha 属性值是多少?
  • @property (weak, nonatomic) IBOutlet UIView *viewInClassA;
  • @JigneshMayani 请举个例子。

标签: ios objective-c object view hidden


【解决方案1】:

发生这种情况是因为您正在创建新课程而您没有参考。因此,创建该类的属性并在另一个类中传递类 c 的引用,然后您可以使用该属性进行隐藏

例如,在 ClassA 中,您有 tableview。

把这个放在 ClassA.h 文件中

@property (weak, nonatomic) IBOutlet UITableView *tableview;

从 classB.h 文件中生成 classA 的属性

@property (Strong, nonatomic) classA *classAObject;

在你想隐藏表格视图的地方写下这个

self.classAObject.tableview.hidden = YES;

当你打开 classB 时传递 classA 引用

ClassB *classB = [[ClassB alloc] initWithNibName:@"ClassB" bundle:nil];
classB.classAObject = self;
[self.navigationController pushViewController:classB animated:YES];

【讨论】:

    【解决方案2】:

    不要试图操纵另一个视图控制器视图。这违反了封装原则。这是一个糟糕的设计,有时它会失败,就像你的情况一样。

    相反,向您的 ClassA 视图控制器添加一个属性,告诉您是否应该隐藏您的视图。在 ClassA 视图控制器的 viewWillAppear 中读取属性并使用它来隐藏或显示视图。

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多