我試圖更新作爲myViewController子類的文件所有者的引用出口連接到myViewController的NSTextView的內容。在NSTextView中修改字符串內容在viewDidLoad方法下工作,但不在myMethod下
當我從按鈕使用IBAction,或者使用控制器的viewDidLoad
方法時,我可以更新文本。但是,當我嘗試從另一個類(在本例中稱爲anotherViewController
)運行該方法時,它會運行該方法,但textview不會更改。
myViewController.h:
#import <Cocoa/Cocoa.h>
#import "anotherViewController.h"
@interface myViewController : NSViewController { }
@property (unsafe_unretained) IBOutlet NSTextView *outText;
@property (weak) IBOutlet NSButton *updateMeButton;
- (void)updateTextView:(NSString *)argText;
- (void)updateTextViewWithoutArg;
@end
myViewController.m:
#import "myViewController.h"
@interface myViewController()
@end
@implementation myViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.outText.string = @"I work successfully";
}
- (IBAction)updateMeButton:(id)sender {
self.outText.string = @"I am updated text! I also work!";
}
- (void)updateTextView:(NSString *)argText {
self.outText.string = @"I don't make it to the NSTextView :(";
NSLog(@"Should have updated text view");
}
- (void)updateTextViewWithoutArg {
self.outText.string = @"I don't make it to the NSTextView :(";
NSLog(@"Should have updated text view");
}
@end
在anotherViewController.m,裏面有所有相關的進口,我稱之爲:
myViewController *viewtask = [[myViewController alloc] init];
[viewtask updateTextViewWithoutArg];
沒有任何反應。該方法運行並記錄它應該更新,但沒有文本更新。我已經嘗試了許多不同的方法,包括textstorage和scrollrange方法,它們都可以工作在已經工作的部分,但是在不工作的部分沒有區別。
我也嘗試只是爲了好玩:
myViewController *viewtask;
[viewtask updateTextViewWithoutArg];
- 還使用實例變量
_outText
- 還使用
[self.outText setString:@"string"];
- 還使用
[_outText setString:@"string"];
同樣,他們的工作但只限於已經在工作的部分。
這應該很簡單,但對我來說不合邏輯。在迅速所有我需要做的是 self.outText.string = "I update whenever I'm called!"
你必須發送'updateTextViewWithoutArg'到現有的視圖控制器。 '[[myViewController alloc] init]'創建一個新的視圖控制器。 – Willeke
@Willeke這最終是我認爲的情況。但不是因爲缺乏研究和嘗試,我還沒有找到辦法做到這一點。奇怪的是,我得到的最接近的是找到沒有答案的類似問題。我試圖使myViewController單身,但由於它最初是從一個segue觸發的,我不認爲這可以工作。此外,我試圖'@ synthesize' mybutton並將其狀態設置爲NSOnState,但我認爲這只是創建另一個實例。 – hmedia1
我意識到有很多方法可以實現最終結果(我知道這樣做的一個方法就是快速創建myViewController並添加橋接標頭),但是我遇到的問題是我一直在運行問題,試圖修改現有的實例,我一直在解決它。也許我的程序是錯誤的,但是,如果有辦法做到這一點,我只想最終掌握這個運行時實例控制。 – hmedia1