TableView에 이벤트 목록을 표시하는 응용 프로그램과 함께 사용하고 있습니다. 행/셀당 이벤트 제목과 날짜를 보여주는 이벤트가 있습니다. 문제는 하루에 2 개 이상의 이벤트가있을 때 앱이 셀당 멋지게 보이지만 사용자가 2 회 이상 반복적으로 날짜를 볼 수있어 비효율적이며 다소 중복되는 것입니다. 그래서 내 생각은 이전 셀 날짜가 현재 셀 날짜와 비슷하며 현재 셀 날짜가 숨겨져 있는지 확인하는 것이 었습니다 (완전히 제거 할 수 없어 사용자가 일정에 이벤트를 저장할 수 있음).iOS UITableView 행에서 이중 값을 숨기는 방법
외부 XML을 TouchXML을 통해 SQLite 데이터베이스로 읽는 중입니다.
-(void) grabXMLData:(NSString *)dataAddress {
_managedObjectContext = [(DAFAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSURL *url = [NSURL URLWithString: dataAddress];
CXMLDocument *xmlParser = [[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil];
NSArray *resultNodes = NULL;
resultNodes = [xmlParser nodesForXPath:@"//month" error:nil];
for (CXMLElement *resultElement in resultNodes) {
NSMutableDictionary *monthItem = [[NSMutableDictionary alloc] init];
[monthItem setObject:[[resultElement attributeForName:@"name"] stringValue] forKey:@"name"];
[monthItem setObject:[[resultElement attributeForName:@"month"] stringValue] forKey:@"month"];
[monthItem setObject:[[resultElement attributeForName:@"year"] stringValue] forKey:@"year"];
Month *aMonth = [NSEntityDescription insertNewObjectForEntityForName:@"Month" inManagedObjectContext:_managedObjectContext];
aMonth.name = [monthItem objectForKey:@"name"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
aMonth.month = [f numberFromString:[monthItem objectForKey:@"month"]];
aMonth.year = [f numberFromString:[monthItem objectForKey:@"year"]];
NSArray *itemNodes = [resultElement children];
for (CXMLElement *resultItem in itemNodes) {
NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
[item setObject:[[resultItem attributeForName:@"id"] stringValue] forKey:@"id"];
int counter;
for(counter = 0; counter < [resultItem childCount]; counter++) {
[item setObject:[[resultItem childAtIndex:counter] stringValue] forKey:[[resultItem childAtIndex:counter] name]];
}
Item *aItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:_managedObjectContext];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
aItem.nr = [f numberFromString:[item objectForKey:@"id"]];
aItem.title = [item objectForKey:@"title"];
aItem.body = [item objectForKey:@"body"];
aItem.date = [item objectForKey:@"date"];
aItem.start = [item objectForKey:@"start"];
aItem.end = [item objectForKey:@"end"];
aItem.start2 = [item objectForKey:@"start2"];
aItem.end2 = [item objectForKey:@"end2"];
aItem.link_url = [item objectForKey:@"link_url"];
aItem.month = aMonth;
[aMonth addItemObject:aItem];
}
}
}
그것은 비교해야하는 항목 날짜 : 여기
내 코드의 샘플입니다.Month *aMonth = [_stages objectAtIndex:indexPath.section];
NSSortDescriptor *sortDescriptorItem = [NSSortDescriptor sortDescriptorWithKey:@"nr" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects: sortDescriptorItem, nil];
_stagesPerMonth = [[aMonth.item allObjects] sortedArrayUsingDescriptors:sortDescriptors];
Item *aItem = [_stagesPerMonth objectAtIndex:indexPath.row];
귀하의 질문에 대한 명확하지 않습니다. 레이블의 숨겨진 속성을 사용하여 숨길 수 있으며 다음 행을 처리 할 때 이전 행의 데이터를 사용할 수 있어야합니다. – allprog
아, Obj-C에서 최근에 소개 된 사전 및 사전을 처리하기위한 약자를 사용하는 것이 좋습니다. 가능한 한 제공합니다. 코드를 훨씬 쉽게 읽을 수있게 해줍니다. – allprog
이전 행의 날짜 레이블에 같은 값이 있으면 날짜 정보가있는 레이블을 숨기고 싶습니다. 나는 잠시 머물러 있고 순간적으로 눈이 멀어서 이것을 깨닫는 데 아무런 단서가 없다. – iJar