在一个xib文件中加载视图时选择特定的UIView

时间:2013-11-15 09:29:44

标签: ios objective-c uiviewcontroller uiview-hierarchy

我在导航栏上有5个分段的控制段,我的应用程序的要求是我必须仅在一个段内更改视图。现在我在一个xib中有两个UIViews。我已经设置了一个整数标志,并根据该标志,我需要更改视图。我发布这个是因为视图在一个xib中都有一个表视图,它们将具有不同的行数,不同的cellForRowAtIndexPathdidSelectRowAtIndexPath。所以有两个问题 - 如何根据标志选择特定视图以及如何管理UIViews作为文件所有者的委托方法会产生问题?如果有人建议使用UIViewController创建一个单独的类,那么如何覆盖/替换该特定段的视图?

请注意我没有使用故事板。应用程序仅基于XIB

1 个答案:

答案 0 :(得分:1)

如果我理解这个问题(英语不是我原生的),那么获取必要数据的方法之一是:

  1. 您可以使用NSArray *subviews = [[self view] subviews];来获取分配给XIB的视图控制器中所有视图的集合(集合不仅可以包含UIView个对象);
  2. 您可以查看属于班级[object isKindOfClass:[UIView class]];的每个对象,以查找所需的UIViews;
  3. 您可以按属性UIView确定tag(可以在XIB中设置);或使用其他一些属性。
  4. 在找到的UIView中,您可以再次获取所有子视图[view subviews];并使用[object isKindOfClass:[UITableView class]];查找所需的表格;
  5. 您可以在委托方法中使用对已找到的UITableView的引用来确定调用委托方法的表。例如:in 您需要检查- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  6. tableView方法