4
我使用CALayer和CATextLayers在iPhone上的數獨網格上佈置數字。清除CALayer
我有一個tableView列出了一些sudokus。當我點擊一個表格單元格時,它會顯示推向導航控制器的另一個viewController中的數獨。
在我的- (void)viewWillAppear
...方法,我打電話給我的- (void)loadSudoku
方法,我會告訴你下面。
問題是,當你看一個數獨,回到使用導航欄中的「後退」按鈕的表視圖,然後點擊另一個數獨。然後舊的數獨仍然在那裏,而新的數獨則被繪製在舊的數獨之上。
我想我需要以某種方式清除舊的。有任何想法嗎? 我確實有一個背景圖像通過實際的數獨網格的界面生成器設置。我不想刪除這個。
,吸引了數獨的方法是這樣的:
- (void)loadSudoku
{
mainLayer = [[self view] layer];
[mainLayer setRasterizationScale:[[UIScreen mainScreen] scale]];
int col=0;
int row=0;
for(NSNumber *nr in [[self sudoku] sudoku])
{
if([nr intValue] != 0)
{
//Print numbers on grid
CATextLayer *messageLayer = [CATextLayer layer];
[messageLayer setForegroundColor:[[UIColor blackColor] CGColor]];
[messageLayer setContentsScale:[[UIScreen mainScreen] scale]];
[messageLayer setFrame:CGRectMake(col*36+5, row*42, 30, 30)];
[messageLayer setString:(id)[nr stringValue]];
[mainLayer addSublayer:messageLayer];
}
if(col==8)
{
col=0; row++;
}else
{
col++;
}
}
[mainLayer setShouldRasterize:YES];
}
@Deepak謝謝。我通過實際的數獨網格的界面生成器設置了背景圖像。這樣做也會消失。 – Linus 2011-05-30 10:36:34
更新了答案。 – 2011-05-30 10:48:24
@Deepak再次感謝你。我在我的「viewWillDisappear」方法中測試了它,以在離開視圖時清除所有內容。我不能讓它工作。我也覺得有一個小錯字?我'indexesOfObjectsPassingTest:*(id obj'應該是'indexesOfObjectsPassingTest:^(id obj'正確?但是,這個:'返回[[obj類] isMemberOfClass:[CATextLayer類]];'在每個對象上返回false ... – Linus 2011-05-30 11:07:14