2009-05-25 101 views
7

我編輯按鈕放置在viewDidLoad中:editButtonItem設置但沒有減號按鈕?

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

它顯示正確導航欄上,並輕敲這個按鈕確實將它更改爲完成。但是,我的表格行中不顯示減號按鈕。刷一行,然後點擊刪除作品,但。

任何想法?

編輯1:這裏是我是如何做的:

- (void)loadView { 
tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
tableView.delegate = self; 
tableView.dataSource = self; 
tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

self.view = tableView; 
} 

編輯2:我的觀察是,如果在IB(RootViewController的)創建我的tableview編輯和減號按鈕顯示效果細膩。另外兩個(或三個)tableview是由上述代碼創建的,所以這可能是問題所在。猜猜我不得不潛入isEditing,編輯和whatnot。

+1

什麼是你重載?它只是一個普通的'UITableViewController?您的UITableViewCells是否做了任何奇怪的事情(子類或其他)?在返回可編輯類型的行時,你在視圖控制器中做了什麼有趣的事情? – 2009-05-25 14:37:36

+0

是的,這只是普通的UITableViewController。我會通過添加一些代碼來澄清我的帖子。 – 2009-05-25 19:17:32

回答

11

傻了。我忘了將UIViewController(我的視圖控制器繼承的類)更改爲UITableViewController。現在,它的工作。

沒有這樣做,我將需要啓用行編輯手動喜歡:

// in loadView 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)]; 

- (void)turnOnEditing { 
[self.navigationItem.rightBarButtonItem release]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(turnOffEditing)]; 
[self.tableView setEditing:YES animated:YES]; 
} 

- (void)turnOffEditing { 
[self.navigationItem.rightBarButtonItem release]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)]; 
[self.tableView setEditing:NO animated:YES]; 
} 
0

你可能需要做的:

self.tableView = tableView; 

loadView方法。這是UITableViewController操作的屬性,如果您從NIB加載視圖,它會自動設置。由於您以編程方式創建視圖,因此需要明確設置它。

+0

有沒有必要這樣做。要記住的最重要的事情是將父類從UIViewController更改爲UITableViewController。 – 2009-05-25 19:56:39

38

如果不繼承的UITableViewController,有一種方法可以做到這一點。只實現setEditing:動畫:在UIViewController子類,如下所示:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing: editing animated: animated]; 
    [self.tableView setEditing:editing animated:animated]; 
} 

注:如果需要更換 「self.tableView」 ...

還添加了 「編輯」 buttonto工具欄:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

就這樣!

0

我遇到了同樣的問題。根據UITableViewController的文檔,它讀取:UITableViewController實現超類方法setEditing:animated:以便如果用戶點擊導航欄中的Edit | Done按鈕,控制器將切換表的編輯模式。

請參閱UITableViewController文檔中的最後一個要點。

1

顯示和在每個tableviewcell的左下角以激活減號按鈕,請執行下列操作:

下面的代碼添加到您的viewDidLoad方法:

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

//以上行是顯示導航欄右上角的「編輯」和「完成」按鈕。

並且還將以下方法添加到.m文件中,以在tableview單元格上顯示和設置MINUS標誌的動畫效果。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    if(editing == YES) { 

    [self.tableView setEditing:editing animated:animated]; 

    } else { 

    [self.tableView setEditing:NO animated:animated]; 

    } 

}