2012-08-16 62 views
0

我遇到與我的應用程序的「設置」頁面有關的問題。我選擇使用靜態單元格,所以我有幾個表格部分,每個部分有3-4個單元格。靜態單元格上的Xcode設置附件標記錯誤

在viewDidLoad中我加載我和NSUserDefaults的設置輔助標誌是這樣的:

... 
} 
else if (... my Condition3 ...) { 
    indexPath = [NSIndexPath indexPathForRow:2 inSection:0]; 
} 
UITableViewCell* cell = [settingsTable cellForRowAtIndexPath:indexPath]; 
cell.accessoryType = UITableViewCellAccessoryCheckmark; 

這工作得很好,並設置單元格與匹配用對號設置。但是,這僅適用於默認情況下在屏幕上顯示的單元格。任何需要滾動的單元格都不包含複選標記。

有沒有辦法解決這個問題,最好不用動態單元格?

回答

4

啊,我終於想通了。 cellForRowAtIndexPath崩潰的應用程序,所以我必須做到以下幾點:

我使用上面的代碼(在問題中)在我的viewDidAppear方法中設置需要複選標記的單元格。我還刪除所有複選標記,然後像之前一樣將其添加到didSelectRowAtIndexPath方法中的選定單元格中。

在每個兩種方法我設置一個NSString變量選定單元格的.textview.text,然後實現此方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    cell.accessoryType = UITableViewCellAccessoryNone; 

    if ([cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", myFirstString]] || [cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", mySecondString]]) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
} 

希望這可以幫助別人。

+0

如果您在willDisplayCell方法中設置附件就足夠了。無需在viewDidAppear中執行此操作。 – 2014-12-27 10:14:34

0

這是因爲當你滾動你的單元格重建和檢查標記清理。

您需要將其設置在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath