我有一個單獨的類用於在各種視圖中顯示數據。插入/刪除行時更新表格
有一個TableView用於刪除/插入行。我有一個按鈕在Edit/Done 之間變化以允許編輯。 「流是Singleton類中的變量」
並使用editingStyleForRowAtIndexPath允許選擇哪個編輯樣式用於每一行。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
int count = [streams count];
int row = indexPath.row ;
if (row == count)
return UITableViewCellEditingStyleInsert;
else
return UITableViewCellEditingStyleDelete;}
我用的cellForRowAtIndexPath爲與文本創建一個附加行「添加電話號碼」,在編輯模式下。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *DeleteMeCellIdentifier = @"AudioCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
DeleteMeCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:DeleteMeCellIdentifier] autorelease];
}
int x = indexPath.row;
if (self.editing == YES)
{
if (indexPath.row == [streams count])
cell.textLabel.text = @"Add Phone Number";
else
cell.textLabel.text = [self.streams objectAtIndex:indexPath.row];
}
else
{
cell.textLabel.text = [self.streams objectAtIndex:indexPath.row];
}
return cell;}
刪除行正常工作。在選擇插入一行時,另一個視圖被壓入堆棧。從這個視圖中,用戶被賦予許多文本選項來標記我們剛剛創建的新行。一旦選擇完成,以下代碼用於更新單例類。
- (void)viewWillDisappear:(BOOL)animated {
Disc *disc = [Disc sharedDisc];
[disc.streams insertObject:@"0208" atIndex:0];
[super viewDidAppear:animated];}
一旦該行的文本已被選中,用戶必須選擇返回按鈕才能返回到前一個TableView。這是問題出現的時間。在主TableView,而不是一個選項標記爲「添加電話號碼」 有兩個。
我知道TableView正在使用的singelton類已更新,它是不以正確方式更新的TableView。如果我然後切換編輯/完成tableView正確顯示信息。
我試圖更新ViewDidLoad & ViewWillAppear方法中的單例類,但結果相同,第一次重新加載視圖時,它不會正確顯示新行。
我想過重寫「Back」BarButton來嘗試讓TableView正確顯示。
謝謝Henrik。無論使用ViewDidLoad還是ViewWillAppear,重複都會出現。我應該提到的是,有兩個ViewController使用。如果我編輯代碼,以便添加一行不會推新視圖,而是更新Singeton類,然後調用[tableView Reload data],它可以很好地工作。從第二個tableView更新singelton並導航回第一個tableView時出現問題。 – user244295 2010-10-05 11:25:53