Как передать строку из одного .m в другой файл .m - PullRequest
1 голос
/ 27 марта 2011

(извините за плохой английский, я из Германии)

Извините, я новичок в XCode, а также в цели C.

Я долго искал свою проблемувремя, даже здесь, но я не нашел ответа.Я верю, что это очень просто, но это не будет работать в моих проектах: - (

Проблема в том, что я хотел бы использовать строку в двух файлах .m.

Например, если я создаю приложение-утилиту. Будет основной вид и оборотная сторона. Оба имеют один файл .h и один файл .m.

Теперь я хочу заполнить строку вmainview с содержимым текстового поля, и, если я переключаю представление, содержимое строки из основного представления должно отображаться в текстовом поле на обратной стороне.

Я читал о Propertys, синтезировать ... но я не понимаю.: - (

Пожалуйста, помогите мне: - (

Коротко: я хочу использовать одну строку в двух файлах .m, чтобы я мог работать с содержимымв обоих файлах .m, и даже в обоих файлах xib.

Я надеюсь, что кто-то может мне помочь.

С уважением, Деннис


#import "MainViewController.h"
#import "MyFirstAnnotation.h"


@implementation MainViewController


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}

- (IBAction)annosetzen:(id)sender{
    CLLocationCoordinate2D coor;
    coor.latitude = 54.3327162876622;
    coor.longitude = 10.1518177986145;

    MKCoordinateSpan span;
    span.latitudeDelta = 0.01;
    span.longitudeDelta = 0.01;
    MKCoordinateRegion region;

    region.center = coor; 
    region.span = span; 

    MyFirstAnnotation *anno = [[MyFirstAnnotation alloc] init]; 
    [mapView addAnnotation:anno];

    [mapView setRegion:region animated:TRUE];

    //MKReverseGeocoder *revGeo = [[MKReverseGeocoder alloc] initWithCoordinate:coor];
    //revGeo.delegate = self; 
    //[revGeo start];   
}

#import "MyFirstAnnotation.h"

@implementation MyFirstAnnotation
- (CLLocationCoordinate2D)coordinate { 
    CLLocationCoordinate2D coor; 
    coor.latitude = 54.3327162876622; 
    coor.longitude = 10.1518177986145; 
    return coor;
}
- (NSString *)title {
    return @"Name";        //This should be set from main view controller
}
- (NSString *)subtitle {
    return @"Sub";         //This also
}
@end

Теперь, если я изменюсь@ "Name" и @ "Sub" в NSStrings, как я могу передать им значение из контроллера основного вида?

1 Ответ

1 голос
/ 27 марта 2011

Когда ваш MainViewController создает FlipSideViewController, он может дать ему соответствующую строку. Если ваш FlipSideViewController и MainViewController оба имеют свойство someString, сделайте это в вашем MainViewController:

self.flipSideViewController = [[FlipSideViewController alloc] initWithNibName:nil bundle:nil];
flipSideViewController.someString = self.someString;
[self.navigationController pushViewController:flipSideViewController animated:YES];

Затем, когда ваш контроллер основного вида снова станет видимым (например, в его -viewWillAppear):

if (self.flipSideViewController) {
    self.someString = self.flipSideViewController.someString;
    self.flipSideViewController = nil;
}

Это всего лишь один из способов сделать это, конечно. Другим способом было бы сделать основной контроллер делегатом контроллера оборотной стороны, и заставить контроллер оборотной стороны отправлять ему сообщение при изменении someString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...