我想兩個視圖控制器之間以及周圍的一切令人費解的方式,我想習慣的最簡單,最直接的方式搜索後移至一個NSString是寫在接受VC的initWithName函數和調用它發送VC。它確實成功地移動了它,但是我希望它在ViewDidLoad加載textViewer之前執行,以便它在按下Tab鍵後立即顯示。下面是從發送VC代碼:在ViewDidLoad之前執行InitWithName可能嗎?
- (void)textViewDidEndEditing:(UITextView *)textView
{
if ([textView.text isEqualToString: @""]) {
textView.text = @"*Paste the machine code in question here*";
}
SecondViewController *theVCMover = [[SecondViewController alloc] initWithName: textView.text];
[self.navigationController pushViewController:theVCMover animated:YES]; //Is this really necessary if I'm not going to segue it directly, I'm just waiting for the user to press the next tab
gotItLabel.text = @"Got it! Ready for action...";
}
下面是在接收VC代碼:你不能(可靠)上的一個實例調用方法直到init
執行完畢
- (id)initWithName:(NSString *)theVCMovee {
self = [super initWithNibName:@"SecondViewController" bundle:nil];
if (self) {
rawUserInput = theVCMovee;
CleanerText.text = rawUserInput;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
CleanerText.text = rawUserInput;
NSLog(@"Got the other tab's text and it's %@ ", rawUserInput);
}
視圖加載後'viewDidLoad'被調用,該視圖第一次加載的東西嘗試訪問它,就像調用'viewController.view',或有一個父視圖控制器佈局它的子(或窗口顯示其根視圖控制器的視圖)。所以只要你不嘗試自己訪問'view'屬性,並且屏幕上還沒有佈局,你應該可以安全地設置你需要的所有參數,然後調用'viewDidLoad'(即'init ...'和'push ...' – Guillaume 2013-03-25 16:52:52
您是否正在使用自動引用計數(ARC),以及如何定義'rawUserInput'(我們可以看到.h?) – NSGod 2013-03-25 16:54:56
是的,使用ARC,在這裏你去: 「@property(強,非原子)的NSString * rawUserInput;」 – 2013-03-25 17:42:55