Как вернуть значения из view2 в view1 на UINavigationcontroll - PullRequest
0 голосов
/ 24 мая 2011

Я новичок в разработке для iPhone.Как я могу перенести строковое значение из view2 в view1 при использовании панели навигации.

У меня нет проблем с переносом строковых значений из view1 в view2 во .... с помощью pushviewcontroller. Но когда я возвращаюсь к предыдущим представлениям с помощью кнопки Назад на панели навигации, я не могу удерживать строковые значения.

Я уже видел сообщение, связанное с этим "/1441795/kak-vernut-znachenie-iz-view2-v-view1-pri-ispolzovanii-paneli-navigatsii", и это не работает для меня, или, может быть, я ошибся.

Мне нужна ваша помощь в решении этой проблемы.

Заранее спасибо,

Нагараджан Говиндараджан.

Ответы [ 3 ]

1 голос
/ 24 мая 2011

В вашем проекте приложения делегат класса объявляет и определяет строку (exp str1).Также выделите и инициализируйте эту строку.

По вашему мнению, 2 класса inport Appdelegate class.Объявите его объект следующим образом:

TestAppDelegate *appDeleg;

В viewDidLoad класса 2 определите: appDeleg = [[UIApplication sharedApplication] delegate];

Теперь сохраните appDeleg.str1 = вашу строку в view2, которую вы хотите сохранить и использовать в представлении 1.

сделать то же объявление в представлении 1 и использовать там strView1 = appDeleg.str1;

1 голос
/ 24 мая 2011

Вы можете использовать делегата. Вы также можете иметь свойство в view1, к которому view2 может обращаться и сохранять строку. Делегат - лучший способ сделать это.

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

0 голосов
/ 24 мая 2011

Лучший способ, который я рекомендую, - использовать класс данных. Объявите переменные в классе данных и используйте их повсюду. Вот как это работает:

// DataClass.h

@interface DataClass : NSObject {    

NSString *str;     

}    
@property(nonatomic,retain)NSString *str;    
+(DataClass*)getInstance;    
@end  

// DataClass.m

@implementation DataClass    
@synthesize str;    
static DataClass *instance =nil;    
+(DataClass *)getInstance    
 {    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    

             instance= [DataClass new];    
        }    
    }    
    return instance;    
}    

Теперь в вашем контроллере представления вам нужно вызвать этот метод как:

DataClass *obj=[DataClass getInstance];  
obj.str= @"I am Global variable";  

Эта переменная будет доступна для каждого контроллера представления. Вам просто нужно создать экземпляр класса данных.

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