Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将导航项中的RightBarButtonim设置为nil不会';不要消失_Ios_Drop Down Menu_View_Uinavigationbar - Fatal编程技术网

Ios 将导航项中的RightBarButtonim设置为nil不会';不要消失

Ios 将导航项中的RightBarButtonim设置为nil不会';不要消失,ios,drop-down-menu,view,uinavigationbar,Ios,Drop Down Menu,View,Uinavigationbar,我有一个类为FSDDropdownPicker(下拉菜单)的对象,我想编辑下拉菜单中的一个条目。执行此操作后,我将对象更改为nil,右栏按钮项更改为nil,但即使在实例化新的下拉菜单并将其添加到右栏按钮项后,旧的下拉菜单仍然保留 if(_picker){ // _picker.tableView.delegate = nil; // _picker.tableView.dataSource = nil; // _picker.delegate =

我有一个类为FSDDropdownPicker(下拉菜单)的对象,我想编辑下拉菜单中的一个条目。执行此操作后,我将对象更改为nil,右栏按钮项更改为nil,但即使在实例化新的下拉菜单并将其添加到右栏按钮项后,旧的下拉菜单仍然保留

    if(_picker){
//        _picker.tableView.delegate = nil;
//        _picker.tableView.dataSource = nil;
//        _picker.delegate = nil;
        self.navigationItem.rightBarButtonItem = nil;
//        [_picker removeFromSuperview];
//        _picker.view
    }

    _picker =  [self.navigationItem addDropdownPickerWithOptions:[arr copy]];
    _picker.delegate = self;
我也有这样的功能,如果菜单变空,然后我完全删除下拉菜单,只需这样做

if([api.myGroups count]==0){
    self.navigationItem.rightBarButtonItem = nil;
    return;
}

然而,我的右翼巴布托主义保持不变。补充说明:我也在使用AMSlideMenu,如果这有什么不同,但它真的不应该

即使在重新添加新的选择器之后,
FSDDropdownPicker
仍将旧的
tableView
保留在视图层次结构中,因此尝试调用
[\u picker removeFromSuperview]在添加新代码之前

也不需要调用
[self.view setNeedsDisplay]
和nil代表和数据源。看来你只需要再分配一次

此外,行
self.navigationItem.RightBarButtonim=\u picker
是多余的,因为
AddDropDownPickerOn
navigationItem
上的category方法已将新创建的选择器分配给
navigationItem

编辑:我的错,在创建新选择器之前,您需要调用以下代码:

for (UIView *view in self.navigationController.navigationBar.superview.subviews) {
    if ([view isKindOfClass:[UITableView class]]) {
        [view removeFromSuperview];
    }
}
不幸的是,库本身并不能解决这个问题,所以您可以这样做,或者创建一个pull请求,并修复
FSDDropdownPicker

编辑: 如果不使用CocoaPods,可以尝试将表视图和
选项
定义放在头文件中-这不是一个好的解决方案,但可能是目前最简单的解决方案。移动这个

@property(强,非原子)UITableView*tableView
和这个
@属性(强,非原子)NSArray*选项行到
FSDDropdownPicker.h
,您不必每次添加/删除项目时都创建新的选择器实例。只需在选项中添加/删除一项,然后重新加载表视图。

[\u picker removeFromSuperview]不起作用,因为没有与之关联的方法_picker.view也不存在。我知道最后几句话是多余的,但这主要是因为我很恼火,因为它没有让人耳目一新。但我会把它们拿出来,这也没用。似乎在简单地重新分配之后,添加另一个新的右栏按钮项实际需要30秒。我以前没有注意到,因为我太不耐烦了,就像其他用户一样。知道为什么要花这么长时间吗?我已经更新了上面的代码。我仍然需要30多秒才能看到视图中的更改。我对每个元素使用自定义图像,直到30秒过去,我才注意到菜单功能或图像的变化。你认为我的模拟器可能有问题吗?如果我是你的情况,我会使用不同的库(例如),或者自己编写功能代码。或者尝试另一个丑陋的修复-查看我的新编辑我已经使tableview成为一个可公开访问的属性。我应该做[tableview开始编辑]之类的事情吗?我想我可以这样做并更改表视图,但这无助于我更改当前显示的图像。或者您只是想让我直接在表视图中调用“从superview中删除”?我想我可能只是切换一下,LMDropdownView能够动态吗?