Это зависит от того, где выполняется код, в который вы хотите установить string1. Если это какой-то внешний класс с доступом к обоим объектам контроллера представления, то это просто. Если у вас есть объект ViewController1 vc1 и объект ViewController2 vc2, то все, что вы делаете, это:
[vc1 setString1:[vc2 string2]];
Если вы хотите установить string1 из кода, запускаемого в ViewController2, то вы используете механизм уведомлений. В процедуре инициализации ViewController1 вы вводите:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(aChangeStringMethod:) name:@"anyStringJustMakeItUnique" object:nil];
И определить:
-(void)aChangeStringMethod:(NSNotification)notification{
string1 = [((ViewController2 *)[notification object]) string2];
}
Затем, во ViewController2, когда вы хотите изменить строку:
[[NSNotificationCenter defaultCenter] postNotificationName:@"anyStringJustMakeItUnique" withObject:self];
Тот же метод используется, когда вы изменяете строку из какого-то третьего класса, который имеет доступ к vc2, но не к vc1. Код ViewController1 такой же, как и выше, и когда вы хотите изменить строку:
[[NSNotificationCenter defaultCenter] postNotificationName:@"anyStringJustMakeItUnique" withObject:vc2];
Самая хитрая часть - это если вы хотите изменить строку из ViewController1 (при условии, что у вас нет доступа к объекту vc2). Вы должны использовать два уведомления: указанное выше, а также для ViewController2:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(launchTheOtherNotificationMethod:) name:@"anotherNotificationName" object:nil];
-(void)launchTheOtherNotificationMethod:(NSNotification)notification{
[[NSNotificationCenter defaultCenter] postNotificationName:@"anyStringJustMakeItUnique" withObject:self];
}
Затем, когда вы хотите изменить строку:
[[NSNotificationCenter defaultCenter] postNotificationName:@"anotherNotificationName" withObject:nil];
Если вы считаете, что это слишком сложно или приводит к чрезмерным накладным расходам, более простое решение - указывать поля в ViewController1 и ViewController2 друг на друга. Затем в ViewController1:
string1 = [myVC2 string2];
А если вы сделаете свойства этих полей, то извне:
[vc1 setString1:[[vc1 myVC2] string2]];
И даже:
[[vc2 myVC1] setString1:[vc2 string2]];