2016-01-08 48 views
0

我有一個類FSDDropdownPicker(下拉菜單)的對象,我想在我的下拉菜單中編輯其中一個條目。這樣做後,我將對象更改爲零,並將右側的條形按鈕項目更改爲零,但即使在實例化新下拉列表並將其添加到正確的條形按鈕項目後,舊的下拉菜單仍然保留。在導航項中設置rightbarbuttonitem爲零不會消失

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; 
} 

但是我rightBarButtonItem保持不變。補充說明:如果這有所作爲,但我真的不應該使用AMSlideMenu。

回答

0

即使在重新添加新選取器之後,FSDDropdownPicker仍將舊的tableView保留在視圖層次結構中,因此請在添加新選取器之前嘗試調用[_picker removeFromSuperview];

也有沒有必要撥打[self.view setNeedsDisplay];的代表和數據源。似乎你只需要重新分配它。

另外,線self.navigationItem.rightBarButtonItem = _picker;是多餘的,因爲類別方法addDropdownPickerWithOptions:navigationItem已經新創建的選擇器分配給navigationItem

編輯:我的壞,你需要創建新的選擇器之前調用此代碼:

for (UIView *view in self.navigationController.navigationBar.superview.subviews) { 
    if ([view isKindOfClass:[UITableView class]]) { 
     [view removeFromSuperview]; 
    } 
} 

不幸的是,庫本身不照顧這一點,讓你無論是做這樣或創建拉動請求並修復FSDDropdownPicker庫。

編輯編輯: 如果你不使用的CocoaPods,你可以嘗試把表視圖,並在頭文件options定義 - 不是一個很好的解決方案,但可能現在最簡單的爲您服務。將這個 @property (strong, nonatomic) UITableView *tableView;和這個@property (strong, nonatomic) NSArray *options;行移動到FSDDropdownPicker.h,並且您不必在每次添加/刪除項目時都創建新的選擇器實例。只需在選項中添加/刪除項目並重新加載表格視圖。

+0

[_picker removeFromSuperview]不起作用,因爲沒有與之關聯的方法。 _picker.view也不存在。我知道最後的陳述是多餘的,但主要是因爲我很煩,它並不令人耳目一新。但我會把它們拿出來,這也沒有幫助。似乎在簡單地重新分配它之後,實際需要30秒才能添加另一個新的右側欄按鈕項目。我之前沒有注意過,因爲我太急躁了,就像任何其他用戶一樣。任何想法爲什麼需要這麼長時間?我已經更新了我的代碼。 – user2977578

+0

查看我的修改更新修復程序 – michalkalis

+0

我仍然需要30+秒才能看到更改視圖。我爲每個元素使用自定義圖像,直到30秒過去後,我才注意到菜單的功能和圖像的變化。你認爲這可能是我的模擬器的問題嗎? – user2977578

相關問題