私は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」が設定され、アプリデリゲートにあります。
前もって感謝します!