有没有办法在navigationItems(rightBarButtonItems & leftBarButtonItems)中高效搜索UIView viewWithTag。
我希望能够以常规方式找到该 View :
UIView* myView = [screen.view viewWithTag:tag];
但这没有用。有效的是:
UIView* myView = [screen.view viewWithTag:tag];
if (!myView) {
for (UIView* barButtonItem in screen.navigationItem.rightBarButtonItems) {
if (barButtonItem.tag == tag)
{
myView = [barButtonItem valueForKey:@"view"];
myView.tag = barButtonItem.tag;
}
}
}
if (!myView) {
for (UIView* barButtonItem in screen.navigationItem.leftBarButtonItems) {
if (barButtonItem.tag == tag)
{
myView = [barButtonItem valueForKey:@"view"];
myView.tag = barButtonItem.tag;
}
}
}
但这是非常丑陋的代码。还有什么更好的事情可以做吗?
最佳答案
您实际上可以通过它获得 View 。
UIView *view = [self.navigationController.navigationBar viewWithTag:4];
从自定义 View 创建的 UIBarButtonItem,将自定义 View 的标签设置为 4。
UIBarButtonItem是从系统Item中创建出来的,将其设置后的标签设置为rightBarButtonItems。
UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
target:self action:@selector(viewWithTag:)];
self.navigationItem.rightBarButtonItems =
[NSArray arrayWithObjects:editButton, nil];
UIView *view = [editButton valueForKey:@"view"];
view.tag = 4;
关于ios - 如何在 navigationItems(rightBarButtonItems 和 leftBarButtonItems)中有效地搜索 viewWithTag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26699576/