【问题标题】:Can I get an instance of a view by ID, like in Android?我可以像在 Android 中那样通过 ID 获取视图的实例吗?
【发布时间】:2013-02-25 11:55:36
【问题描述】:

我有一个表格视图,它是在 Interface Builder 中添加的。如何在视图控制器中获取它的实例?

有没有像在 Android 中使用 getViewById() 的方法?

如果是这样,我在哪里给视图提供它的 ID?

【问题讨论】:

  • 在IOS你可以设置标签
  • @iPatel:停止添加 [iphone] 到与 iPhone 无关的问题!

标签: ios objective-c cocoa-touch uiview


【解决方案1】:

我认为你是 iPhone sdk 的初学者,解决方案如下:

  1. 首先在视图控制器的 .h 文件中,添加这些行,IBOutlet UITableview * myTableView;
  2. 现在打开同一视图控制器的 .xib 文件,然后将 xib 中的 TableView 链接到文件所有者,TableView 的名称将出现。
  3. 还要链接Tableview 的委托和数据源。

【讨论】:

  • 这比遍历子视图要好得多。
【解决方案2】:

以编程方式创建和添加UITableView 并使用它对象(这仅适用于UITableView)。

self.tblView            = [[UITableView alloc] init];
self.tblView.frame      = CGRectMake(0, 87, self.view.frame.size.width, 374);
self.tblView.delegate   = self;
self.tblView.dataSource = self;
[self.view addSubview:self.tblView];

这里self.tblViewUITableView的对象,你可以根据你的需要使用它。

或者获取UIView的子视图的每个对象

NSArray *subViewArray = [self.view subviews];
for (id obj in subViewArray)
{
  // here **`obj`** get each object of subView of UIView.
}

【讨论】:

  • 谢谢,我换了第二种方法:)
  • 这不是正确的做法。正确的方法是@vishwa.deepak 建议的。但是您的问题的答案是您需要在 Storyboard 或 XIB 文件中设置 UITableView 的标签。然后在你的 .m 文件中调用 UITableView 的 superview 上的 viewWithTag: 方法。它将返回 UITableview 实例,该实例引用您在 Storyboard/xib 中的表视图。不要忘记在 UITableview 对象中对返回的对象进行类型转换,并且您的 tableview 的标签不能与任何其他同级视图的标签匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多