所以我有一个按钮附加到名为writeToFile的操作上:
该操作将打开一个NSPanel,并允许用户输入要写入桌面的文件名。
我遇到的问题是我无法更新用户,并让他们知道在NSPanel关闭之前写入已成功。
因此,我放置了一个标签或NSTextField,因为我正在谈论NSPanel中的一个Mac应用程序,并且NSTextField会更新,并告诉用户写入成功。
我将附加到动作writeToFile:上的按钮标题更改为“关闭”,并且我尝试通过使用performSelector更改按钮实际调用的方法:
但是,我不断收到“无法识别的选择器”
这是一些代码,所有帮助都将不胜感激:
- (void) closePanel {
[theSheet close];
}
- (IBAction) writeToFile: (id)sender
{
if ([_nameOfFile.stringValue length] > 0) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0]stringByAppendingPathComponent:_nameOfFile.stringValue];
NSString *string = _inputTextView.string;
BOOL OK = [string writeToFile:path
atomically:YES
encoding:NSUTF8StringEncoding
error:NULL];
if (OK) {
_statusField.stringValue = @"File written to desktop";
_writeButton.title = @"close";
[_writeButton performSelector:@selector(closePanel)];
} else {
_statusField.stringValue = @"Sorry, something went wrong :(";
}
} else {
_statusField.stringValue = @"Please name the file first!";
}
}
最佳答案
更改行:
[_writeButton performSelector:@selector(closePanel)];
对于:
[_writeButton addTarget:self action:@selector(closePanel)forControlEvents:UIControlEventTouchUpInside];