有任何想法吗?我在我的初始化器中缺少某些东西吗?
PersonController.h
#import <Foundation/Foundation.h>@interface Person : NSObject { IBOutlet NStableVIEw *personstable; NSMutableArray *personsList; NSMutableArray *personCollection; IBOutlet NSTextFIEld *selectedPersonname; IBOutlet NSTextFIEld *selectedPersonGender;@private}- (voID)tableVIEwSelectionDIDChange:(NSNotification *)aNotification;@end
PersonController.m
#import "PersonController.h"#import "Person.h"@implementation PersonController- (ID)init{ self = [super init]; if (self) { personsList = [[NSMutableArray alloc] init]; Person *person = [[Person alloc] init]; // Create person 1 person.name = @"Bob"; person.gender = @"male"; // Append to array [personsList addobject:person]; [person release]; // Create person 2 person = [[Person alloc] init]; person.name = @"Fred"; person.gender = @"UnkNown"; // Append to array [personsList addobject:person]; [person release]; [personstable reloadData]; } return self;}- (NSInteger)numberOfRowsIntableVIEw:(NStableVIEw *)tableVIEw { return [personsList count];}- (ID)tableVIEw:(NStableVIEw *)tableVIEw objectValueFortableColumn:(NStableColumn *)tableColumn row:(NSInteger)row { Person *person = [personsList objectAtIndex:row]; Nsstring *IDentifIEr = [tableColumn IDentifIEr]; return [person valueForKey:IDentifIEr];}- (voID)tableVIEwSelectionDIDChange:(NSNotification *)aNotification{ NSInteger selectedRow = [personstable selectedRow]; if (selectedRow == -1) { // these should be localized,but use string constants here for clarity [selectedPersonname setStringValue:@"No selection"]; [selectedPersonGender setStringValue:@"No selection"]; } else { Person *selectedPerson = [personCollection objectAtIndex:selectedRow]; [selectedPersonname setStringValue:[selectedPerson name]]; [selectedPersonGender setStringValue:[selectedPerson gender]]; }}- (voID)dealloc{ [super dealloc];}@end解决方法 所以这里的问题是,当单击NStableColumn中的一行时,我试图使用tableVIEwSelectionChange来触发事件.因为我无法得到这个工作,我采取了另一种方法是创建一个IBAction并将其链接到NStableVIEw,我已经发现这个工作很好.
为了做到这一点,我做了以下工作:
>删除 – (voID)tableVIEwSelectionDIDChange
>创建IBAction
>在XIB文件中,在IBAction和NStableVIEw之间创建一个接收到的 *** 作链接,在NStableVIEw连接检查器的“发送 *** 作”下,将“选择器” *** 作“连接此”选择器“与要触发的IBAction相关联.
这是PersonController.m中的IBAction
- (IBAction)columnChangeSelected:(ID)sender{ NSInteger selectedRow = [personstable selectedRow]; if (selectedRow != -1) { NSLog(@"Do something with selectedRow!"); } else { // No row was selected }}总结
以上是内存溢出为你收集整理的objective-c – 如何从NSTableView中选择行来创建动作全部内容,希望文章能够帮你解决objective-c – 如何从NSTableView中选择行来创建动作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)