self.view中的UITableView

时间:2014-02-25 10:41:16

标签: ios objective-c uitableview

我正在尝试使用此代码自定义所有的tableViews,但Xcode给了我一个错误。 我有2个tableViews,我需要找到tableView!= self.tableView。 我怎么能这样做?

    for(UITableView *tableView in [self.view subviews]) {
        if (![tableView isEqual:self.tableView]) {
            tableView.separatorInset = UIEdgeInsetsMake(0, 58, 0, 0);
        }
    }

2 个答案:

答案 0 :(得分:1)

你需要使用如下

 for(UIView * view in [self.view subviews])  {

    if ([view isKindOfClass:[UITableView class]])  {


     UITableView * tblView = (UITableView *) view;
    tblView.separatorInset = UIEdgeInsetsMake(0, 58, 0, 0);
    }
}

我希望它可以帮到你。

答案 1 :(得分:0)

我怀疑你得到的错误与你假设每个View从你传递到UITableView UITableView *tableView in [self.view subviews]的子视图中回来的事实有关,但不是每个视图都是返回将是UITableView并且假设它们将是不好的做法。一个好主意是将UITableView更改为UIView,因为大多数UI元素都是UIView的子类。完成后,您需要检查它是UITableView的实例,如果是,您可以开始将view投射到UITableView。请参阅下面的修订代码以便更好地理解。

// the issue in your code is that you are getting views back and you are assuming it is 
// a UITableView (So I bet that the error is something do with this) 
for(UIView *view in [[self view] subviews]) {
   // Then we will want to check that it is an instance UITableView 
   // because not everything will be, the initial View will not be 
   // an instance of UITableView
   if([view isKindOfClass:[UITableView class]]) {
       UITableView *tb = view
       // Right so we know we have a UITableView
       // Now we want to check that it not equal to self.tableView as your code 
       // indicates you want 
       if(![tb sEqual:[self tableView]]) {
           tb.separatorInset = UIEdgeInsetsMake(0, 58, 0, 0);
       }
   }
}

<强>更新

感谢您提供错误

  

- [UIView setSeparatorInset:]:无法识别的选择器发送到实例

这样做的原因是因为您将在for循环中返回UIView这是我们检查以确保返回的视图是类UITableView并且如果它是我们开始施展它。