我正在尝试使用此代码自定义所有的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);
}
}
答案 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
并且如果它是我们开始施展它。