2010-02-15 62 views
0

我有一個應用程序有一個標籤欄,每個標籤包含一個單獨的表。第一個表使用核心數據來堅持其條目和複選標記。在第二個選項卡上的第二個表使用NSMutableArray來填充它(我會使用核心數據,但我將不得不預先填充它,這張表不允許這樣做)我想持久性複選標記以我在第一個包含核心數據的表格,但有些錯誤。代碼如下所示:無論如何填充UITableView數組,但堅持複選標記?

-(void)viewDidLoad { 
    [super viewDidLoad]; 
airport = [[NSMutableArray alloc] init]; 
[airport addObject:@"Passport"]; 
} 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
return 1; 
} 


// Customize the number of rows in the table view. 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
return [airport count]; 
} 


// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

// Set up the cell... 
NSString *cellValue = [airport objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 
//[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 


NSManagedObject *item = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
cell.textLabel.text = [item valueForKey:@"name"]; //CHANGED TO DETAIL 


if ([[item valueForKey:@"check"] boolValue]) { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} else { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    return cell; 

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 


NSManagedObject *selectedObject = [self.fetchedResultsController objectAtIndexPath:indexPath]; 


if ([[selectedObject valueForKey:@"check"] boolValue]) { 
    [selectedObject setValue:[NSNumber numberWithBool:NO] forKey:@"check"]; 
} else { 
    [selectedObject setValue:[NSNumber numberWithBool:YES] forKey:@"check"]; 
} 

UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; 
if (thisCell.accessoryType == UITableViewCellAccessoryNone) { 
    thisCell.accessoryType = UITableViewCellAccessoryCheckmark; 
} else { 
    thisCell.accessoryType = UITableViewCellAccessoryNone; 
} 
[tableView deselectRowAtIndexPath:indexPath animated:NO];  

}

我相信行cell.textLabel.text = [項目valueForKey @ 「名」]; 是什麼造成它。我想要做的就是從數組中填充表,並且複選標記保持不變。任何幫助是極大的讚賞。提前致謝。

回答

0

這條線被替換單元格文本:

NSString *cellValue = [airport objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 

爲什麼使用您的「姓名」,「項目」的屬性:

cell.textLabel.text = [item valueForKey:@"name"]; 
,最初由這些線分配

+0

名稱是名爲「Hero」的實體中的一個屬性這就是我的第一個表的工作方式,它在加載時檢查名稱是否有複選標記。有什麼辦法可以堅持與數組或預先加載的列表複選標記? – Tanner 2010-02-15 05:58:27

+0

有很多方法可以用Core Data來做你想做的事情。我將使用Core Data,因爲您已經在使用它,但是如果您想要,您可以使用屬性列表(plist)來持久化已檢查的數據數組。 – gerry3 2010-02-15 06:35:06

+0

我如何使用plist來堅持複選標記?陣列會取代plist嗎? – Tanner 2010-02-15 14:20:15