1

したがって、writeToFileというアクションにアタッチされたボタンがあります。

このアクションによりNSPanelが開き、ユーザーはデスクトップに書き込みたいファイルの名前を入力できます。

私が抱えている問題は、ユーザーを更新できず、NSPanelが閉じる前に書き込みが成功したことをユーザーに知らせることができないことです。

NSPanel内のMacアプリについて話しているので、ラベルまたはNSTextFieldを配置し、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!";

    }
}
4

3 に答える 3

1

これ_writeButtonは、が実装されていないため-closePanelです。あなたのクラスはそうします。次のように変更します。

[ self closePanel ];
于 2012-10-19T20:31:24.190 に答える
0

行を変更します。

[_writeButton performSelector:@selector(closePanel)];

にとって:

[_writeButton addTarget:self action:@selector(closePanel)forControlEvents:UIControlEventTouchUpInside];
于 2012-10-19T20:37:11.170 に答える
0

代理人を設定しましたか?

[_writeButton setTarget:self];
[_writeButton setAction:@selector(writeToFile:)];
于 2012-10-26T09:36:58.550 に答える