2013-01-22 4 views
0

J'essaie d'utiliser NSOpenPanel pour faire apparaître sur la page de fichier ouvert. Il fonctionne très bien pour la plupart, sauf pour les 3 choses:NSOpenPanel agissant bizarre

  1. Le premier problème est que la barre latérale ne semble pas, même si je peux encore cliquer dessus.

  2. Le deuxième problème est que lorsque je passe à un dossier avec moins de fichiers que les précédents, l'écran n'est pas effacé et certains des fichiers précédents apparaissent toujours, bien qu'ils ne soient pas cliquables.

  3. Lorsque j'essaie de basculer vers l'affichage des colonnes, l'application se bloque. Mais les 3 autres vues fonctionnent très bien.

Voici le journal de l'accident:

AppKit`-[NSTableView setVerticalMotionCanBeginDrag:]: 
0x7fff91d4f899: pushq %rbp 
0x7fff91d4f89a: movq %rsp, %rbp 
0x7fff91d4f89d: movq 7385076(%rip), %rax  ; TrustKeychains::systemKcHandle() + 92 
0x7fff91d4f8a4: movq (%rax,%rdi), %rax 
0x7fff91d4f8a8: movq 7385193(%rip), %rcx  ; tp_policyTrustSettingParams + 92 
0x7fff91d4f8af: movl $4292870143, %edi 
0x7fff91d4f8b4: andl (%rax,%rcx), %edi <- Crash points here with EXC_BAD_ACCESS (code=1, address = 0x18) 
0x7fff91d4f8b7: shll $21, %edx 
0x7fff91d4f8ba: andl $2097152, %edx 
0x7fff91d4f8c0: addl %edi, %edx 
0x7fff91d4f8c2: movl %edx, (%rax,%rcx) 
0x7fff91d4f8c5: popq %rbp 
0x7fff91d4f8c6: ret  

Le journal de l'accident dit le crash est dans cette discussion 1.

Je me demandais si quelqu'un savait comment y remédier. Voici mon code

-(IBAction)openDialog:(id)sender{ 
NSWindow *window = [[viewArray objectAtIndex:currentIndex] window]; 

NSOpenPanel *openDialog = [NSOpenPanel openPanel]; 
[openDialog setCanChooseFiles:YES]; 
[openDialog setCanChooseDirectories:NO]; 
NSString *homeString = [NSString stringWithFormat:@"file://localhost%@",NSHomeDirectory()]; 
[openDialog setDirectoryURL:[NSURL URLWithString:homeString]]; 
NSArray *fileTypes = [[NSArray alloc] initWithObjects:@"xcodeproj", nil]; 
[openDialog setAllowedFileTypes:fileTypes]; 

[openDialog beginSheetModalForWindow:window completionHandler:^(NSInteger result){ 
    if (result == NSFileHandlingPanelOKButton){ 
     NSURL *doc = [openDialog URL]; 
     [[NSWorkspace sharedWorkspace] openFile:[doc relativePath]]; 
    } 
}]; 

}

Je mets exactement le même code dans un projet XCode différent et il fonctionne très bien, donc je ne suis pas tout à fait sûr où le problème est. Merci!

+0

Ressemble à une corruption de pile. – trojanfoe

+0

qu'est-ce qu'une corruption de pile? désolé je continue d'apprendre à coder avec Objective-C – user1998511

Répondre

0

J'ai trouvé le problème. Il s'est avéré dans mon projet que j'avais redéfini NSTableView et que cela causait toutes les erreurs.