我有 3 节课:
LocalRoom.m
- (void) handleNewConnection:(Connection*)connection {
NSString* number = @"10";
AppDelegate *theAppDelegate = [[NSApplication sharedApplication] delegate];
[theAppDelegate connectionNumber:number currentZoneName:@"Zone1";
}
触发器 ----->
AppDelegate.h
MyTableController *tableController;
AppDelegate.m
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
tableController = [[MyTableController alloc] init];
}
- (void)connectionNumber:(NSString *)number zoneName:(NSString *)currentZoneName {
if ([currentZoneName isEqualToString:zoneName1]) {
[tableController changeConnections:number withRowNumber:0];
}
}
触发器 ----->
MyTableController.h
@interface MyTableController : NSControl {
IBOutlet NSTextField *zoneNameTextField;
}
@property (retain) NSTableView * idTableView;
- (void) changeConnections:(NSString *)number withRowNumber:(int)rowNumber;
MyTableController.m
- (void) changeConnections:(NSString *) number withRowNumber:(int) rowNumber{
NSRunAlertPanel([NSString stringWithFormat:@"%d", rowNumber], number, @"", @"", @"");
NSTableColumn *tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"Connections"];
[self tableView:idTableView setObjectValue:number forTableColumn:tableColumn row:rowNumber];
[idTableView reloadData];
}
我的 NSRunAlertPanel 提出了正确的值,但我的 NSTextView 没有改变。当我将 NSTableView 的“编辑”代码放在 MyTableController.m 的 IBAction 中时,它可以工作。我检查了 idTableView 是否为 NULL,确实如此。这很奇怪。因此,当 AppDelegate 运行 changeConnections 时,我感觉发生了一些奇怪的事情。我遇到了类似的问题,nstextfield 不返回数据。修复方法是通过AppDelegate *theAppDelegate = [[NSApplication sharedApplication] delegate];
在这种情况下是否有类似的东西来初始化它?
您可能想知道为什么我只是不从 LocalRoom 调用 MyTableController,而是在应用程序委托中设置并找到了“zoneName1”。
提前致谢!