Я пытаюсь разделить строку между двумя представлениями в моем проекте iPhone. В настоящее время это работает, если я использую фактическое @ "что-то здесь" для строки, но если я хочу использовать что-то вроде label.text, это не так, хотя это все еще строка.
Я покажу вам, что мне нужно, чтобы прояснить ситуацию.
Первый просмотр: Info_ViewController.h
#import <UIKit/UIKit.h>
@interface Info_ViewController : UIViewController {
IBOutlet UITextField *locationField;
}
@property (nonatomic, retain) NSString *locationString;
+ (id)sharedInfoVC;
@end
Первый просмотр: Info_ViewController.m
#import "Info_ViewController.h"
static Info_ViewController *sharedInfoVC = nil;
@implementation Info_ViewController
@synthesize locationString;
#pragma mark Singleton Methods
+ (id)sharedInfoVC {
@synchronized(self) {
if (sharedInfoVC == nil)
sharedInfoVC = [[self alloc] init];
}
return sharedInfoVC;
}
- (id)init {
if (self = [super init]) {
locationString = [[NSString alloc] initWithString:locationField.text]; //This is there part I mentioned earlier, when using @"something" instead of locationField.text works.
}
return self;
}
Второе представление: Confirm_ViewController.m
#import "Confirm_ViewController.h"
#import "Info_ViewController.h"
@implementation Confirm_ViewController
- (IBAction)buttonZ:(id)sender
{
Info_ViewController *infoVCmanager = [Info_ViewController sharedInfoVC];
locationLabel.text = infoVCmanager.locationString;
}
Пока я помещаю его под кнопку, но в конечном итоге он будет находиться под viewDidLoad.
Если вы замените locationField.text на строку (@ "blahblahblah"), она не будет аварийно завершена и будет работать.
При сбое я получаю сообщение об ошибке: Программа получила сигнал: «SIGABRT»
РЕДАКТИРОВАТЬ: я пытался изменить
initWithString:locationField.text
до
initWithFormat:@"%@",locationField.text
и теперь мой ярлык во втором представлении печатает "(NULL)"
Спасибо, что нашли время дать совет, я действительно ценю это.