2009-05-04 6 views
-2

최근에 친구로부터 몇 가지 코드 예를 들었지만 그는 나를 위해 작동하도록 한 줄을 변경해야한다고 말했습니다. 나는이 라인을 교체 할 필요가이 코드를 어떻게 대체해야합니까?

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn: 

(NSTableColumn *)aTableColumn row:(int)rowIndex { 

    if ([aCell respondsToSelector:@selector(setTextColor:)]) { 

     if ([self visibilityForFile:[fileList objectAtIndex:rowIndex]] == NO) 

[aCell setTextColor:[NSColor lightGrayColor]]; 

     else [aCell setTextColor:[NSColor blackColor]]; 
    } 
} 

: 다음은 코드의 난에서 테이블마다 행을 가지고 일부 다른 코드와

[self visibilityForFile:[fileList objectAtIndex:rowIndex]] == NO 

가, 내가 실제로 할 시도하고있다 표에 확인란이있는 경우 행의 확인란을 선택하면 해당 행의 텍스트 색상이 변경됩니다. 코드에서 행의 체크 박스가 선택되었는지 확인해야한다고 생각합니다. 코드를 필요로합니다.

업데이트

이 앱 (코어 데이터)에 대한 위임이다.

헤더 파일 (.H) : 반환 :

/** 
    Returns the support folder for the application, used to store the Core Data 
    store file. This code uses a folder named "Spark" for 
    the content, either in the NSApplicationSupportDirectory location or (if the 
    former cannot be found), the system's temporary directory. 
*/ 

- (NSString *)applicationSupportFolder { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 
    NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory(); 
    return [basePath stringByAppendingPathComponent:@"Spark"]; 
} 


/** 
    Creates, retains, and returns the managed object model for the application 
    by merging all of the models found in the application bundle. 
*/ 

- (NSManagedObjectModel *)managedObjectModel { 

    if (managedObjectModel != nil) { 
     return managedObjectModel; 
    } 

    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];  
    return managedObjectModel; 
} 


/** 
    Returns the persistent store coordinator for the application. This 
    implementation will create and return a coordinator, having added the 
    store for the application to it. (The folder for the store is created, 
    if necessary.) 
*/ 

- (NSPersistentStoreCoordinator *) persistentStoreCoordinator { 

    if (persistentStoreCoordinator != nil) { 
     return persistentStoreCoordinator; 
    } 

    NSFileManager *fileManager; 
    NSString *applicationSupportFolder = nil; 
    NSURL *url; 
    NSError *error; 

    fileManager = [NSFileManager defaultManager]; 
    applicationSupportFolder = [self applicationSupportFolder]; 
    if (![fileManager fileExistsAtPath:applicationSupportFolder isDirectory:NULL]) { 
     [fileManager createDirectoryAtPath:applicationSupportFolder attributes:nil]; 
    } 

    url = [NSURL fileURLWithPath: [applicationSupportFolder stringByAppendingPathComponent: @"Spark.xml"]]; 
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]]; 
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:nil error:&error]){ 
     [[NSApplication sharedApplication] presentError:error]; 
    }  

    return persistentStoreCoordinator; 
} 


/** 
    Returns the managed object context for the application (which is already 
    bound to the persistent store coordinator for the application.) 
*/ 

- (NSManagedObjectContext *) managedObjectContext { 

    if (managedObjectContext != nil) { 
     return managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [managedObjectContext setPersistentStoreCoordinator: coordinator]; 
    } 

    return managedObjectContext; 
} 


/** 
    Returns the NSUndoManager for the application. In this case, the manager 
    returned is that of the managed object context for the application. 
*/ 

- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window { 
    return [[self managedObjectContext] undoManager]; 
} 


/** 
    Performs the save action for the application, which is to send the save: 
    message to the application's managed object context. Any encountered errors 
    are presented to the user. 
*/ 

- (IBAction) saveAction:(id)sender { 

    NSError *error = nil; 
    if (![[self managedObjectContext] save:&error]) { 
     [[NSApplication sharedApplication] presentError:error]; 
    } 
} 


/** 
    Implementation of the applicationShouldTerminate: method, used here to 
    handle the saving of changes in the application managed object context 
    before the application terminates. 
*/ 

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { 

    NSError *error; 
    int reply = NSTerminateNow; 

    if (managedObjectContext != nil) { 
     if ([managedObjectContext commitEditing]) { 
      if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 

       // This error handling simply presents error information in a panel with an 
       // "Ok" button, which does not include any attempt at error recovery (meaning, 
       // attempting to fix the error.) As a result, this implementation will 
       // present the information to the user and then follow up with a panel asking 
       // if the user wishes to "Quit Anyway", without saving the changes. 

       // Typically, this process should be altered to include application-specific 
       // recovery steps. 

       BOOL errorResult = [[NSApplication sharedApplication] presentError:error]; 

       if (errorResult == YES) { 
        reply = NSTerminateCancel; 
       } 

       else { 

        int alertReturn = NSRunAlertPanel(nil, @"There Are Un-Saved Changes. Quit anyway?" , @"Quit anyway", @"Cancel", nil); 
        if (alertReturn == NSAlertAlternateReturn) { 
         reply = NSTerminateCancel; 
        } 
       } 
      } 
     } 

     else { 
      reply = NSTerminateCancel; 
     } 
    } 

    return reply; 
} 


/** 
    Implementation of dealloc, to release the retained variables. 
*/ 

- (void) dealloc { 

    [managedObjectContext release], managedObjectContext = nil; 
    [persistentStoreCoordinator release], persistentStoreCoordinator = nil; 
    [managedObjectModel release], managedObjectModel = nil; 
    [super dealloc]; 
} 


@end 
+0

앱 위임 코드에 테이블 처리 코드가 전혀없는 것 같습니다. 테이블을 채우는 코드를 작성하지 않았다면 먼저 테이블을 작성한 다음 텍스트를 회색화하는 방법에 대해 걱정해야합니다. –

+0

그것은 핵심 데이터입니다. 이미 그렇게했을 것이라고 생각했습니다. – Joshua

답변

1

모델에서 지정된 행의 확인란을 지원하는 부울 값을 읽으려면 if 문을 변경해야합니다. 모델에 대한 정보가 없으므로 아무도 실제 코드 줄을 사용할 수 없습니다.

나머지 코드가 사용자가 원하는대로 수행 할 수 있는지는 명확하지 않습니다. 텍스트 자체의 색상이 아니라 조건부로 텍스트의 색상을 변경합니다.

+0

텍스트 색상을 변경하고 싶습니다. – Joshua

+0

if 문이 모델에서 지정된 행의 확인란을 지원하는 부울 값을 읽도록하기 위해 어떤 코드를 변경해야합니까? – Joshua

0

는 [자기 visibilityForFile가] 무엇을 않습니다

#import <Cocoa/Cocoa.h> 

@interface Spark_AppDelegate : NSObject 
{ 
    IBOutlet NSWindow *window; 
    IBOutlet NSMenu *theMenu; 

    NSPersistentStoreCoordinator *persistentStoreCoordinator; 
    NSManagedObjectModel *managedObjectModel; 
    NSManagedObjectContext *managedObjectContext; 
} 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator; 
- (NSManagedObjectModel *)managedObjectModel; 
- (NSManagedObjectContext *)managedObjectContext; 

- (IBAction)saveAction:sender; 

@end 

하는 .m 파일? BOOL이 아닌 경우 BOOL을 반환하는 것으로 변경해야합니다. 친구에게 네가 선을 바꿔야 할 것이 무엇인지 물어 보지 그래?

+0

나는 그에게 물었다. 그러나 나는 대답이 없었다. 그것은 이상하다. 당신이 도울 수 있는지 궁금 해서요. 내가 BOOL을 반환하도록 바꾸려면 어떻게해야합니까? – Joshua

+0

코드를 더 많이 볼 필요가 있습니다. 특히,이 메소드가있는 클래스의 나머지 코드는 –

+0

입니다.이 클래스는 별도의 클래스가 될 것입니다. – Joshua

1

일반적으로 한 셀의 디스플레이를 다른 셀의 값으로 지정하고 싶지는 않습니다. MVC와 호환되는 방법은 확인란의 해당 행 객체 (예 : isActive)의 속성을 제어하는 ​​것입니다. 위의 코드에서 텍스트를 그리는 방법을 결정할 수 있습니다. 확인란 상태와 텍스트 색상이 모두 동일한 속성을 기반으로하는 한 원하는대로 일치합니다.

또한 원하는 색상은 [NSColor lightGrayColor]이 아니라 [NSColor disabledControlTextColor]입니다. 일반적으로 문자 색상을 변경하는 대신 전체 셀 (예 : [aCell setEnabled:NO])을 사용하지 않도록 설정하여 사용 중지 된 셀과 유사하게 보이게 만듭니다.

관련 문제