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

У меня есть представление выбора на странице контроллера представления, скажем, контроллер представления 1. Теперь у меня есть требование доступа к выбранному строковому значению из этого представления выбора в другом контроллере представления, например, контроллере представления 2.

Это связано с тем, что у меня есть табличное представление, в котором отображаются сохраненные данные, соответствующие 4 группам, т.е. мое приложение является приложением напоминания, которое пользователь сохраняет напоминание, которое отображается на странице напоминания о просмотре. Напоминания сохраняются пользователем в соответствующих группах, скажем друзья, семья, офис и т. д. Итак, я ранее получил в плохом контексте программирования, т.е.

Я взял 4 контроллера представления для отображения напоминаний, соответствующих 4 группам, то есть, скажем, friendsViewController для отображения напоминаний, соответствующих друзьям, используя запрос

NSString *getQuery = [NSString stringWithFormat:@"SELECT * FROM reminders WHERE Grp = 'Friends' GROUP BY Name,Event,Date"];

Как и для группы семьи, офиса и знакомых. Следовательно, для смещения контекста плохого программирования на хорошую привычку программирования у меня появилась идея использовать запрос:

NSString *getQuery = [NSString stringWithFormat:@"SELECT * FROM reminders WHERE Grp = '%@' GROUP BY Name,Event,Date",**selected string value from the picker in previous view**];

Пожалуйста, укажите изменение, которое я пытаюсь сделать, т.е. Grp = '%@' - строка является выбранным значением из компонента строки в представлении выбора, которое находится в предыдущем представлении.

Я знаю 2 возможных способа получения доступа,

1.subclassing the view controller i.e. 

@interface viewController2:viewController1,but I already have subclassed i.e.:

@interface viewController2:addReminderController ,so I cant subclass twice,I am not aware too!

2. Creating an instance object of the viewController1 i.e. 

viewController1 *vC1 and I tried to access the groupPicker like [vC1.groupPicker selectedRowInComponent:row],

но, как мы можем ожидать, он выдает ошибку, т.е. row undeclared ,

Я попытался получить доступ к массиву, как я назначил количество строк в компоненте для groupPicker как [self.groupArray count], поэтому я попытался заставить тактику работать и в viewController2, т.е.:

[vC1.groupArray objectAtIndex:row],as expected the same error: **row undeclared**

Итак, как я могу получить доступ к строке (строке), выбранной в представлении выбора, которая присутствует в предыдущем представлении, чтобы я мог продемонстрировать хорошую привычку к программированию, что является хорошим знаком в будущем для таких новичков, как я :)

Пожалуйста, помогите мне с некоторыми ценными предложениями

Всем спасибо заранее :)


person Eshwar Chaitanya    schedule 03.01.2012    source источник
comment
Вы хотите получить выбранное значение из Pickerview и эту строку, которая будет использоваться в следующем представлении?   -  person KAREEM MAHAMMED    schedule 03.01.2012
comment
@KAREEMMAHAMMED Да, пожалуйста, любые предложения. Спасибо за беспокойство :)   -  person Eshwar Chaitanya    schedule 03.01.2012
comment
@EshwarChaitanya: почему вы не используете appDelegate для своего приложения?   -  person iCoder86    schedule 03.01.2012
comment
@ iCoder86 У меня уже есть appDelegate для моего приложения, пожалуйста, предложите мне, что делать сейчас, спасибо за комментарий :)   -  person Eshwar Chaitanya    schedule 04.01.2012


Ответы (2)


Шаг 1: Возьмите переменную NSString в файле appDelegate.

Шаг 2: создайте экземпляр appDelegate в обоих представлениях, если вы хотите установить значение и получить значение следующим образом.

yourApplicationDelegate *appDelegate;

Шаг 3: инициализируйте appDelgate в файле реализации следующим образом.

appDelegate = [[UIApplication sharedApplication] delegate];

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

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

person iCoder86    schedule 04.01.2012

Вы можете объявить NSString в Secondview глобально, и лучше взять кнопку, и в этом действии вы должны написать

Возьмите NSString *selectedString глобально в самом лучшем представлении в методе делегата Pickerview

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   selectedString=    [arrayNo objectAtIndex:row];

//here array is the array used for pickerview 
}

-(IBAction)btnAction:(id)sender
{
SecondView *sec=[[SecondView alloc]initWithNibname:@"SecondView" bundle:nil];
sec.stringFromPrevView=selectedString;
[self presentModalViewController:sec animated:YES];
[sec release];
}

stringFromPrevView эта строка будет использоваться в вашем SecondView в соответствии с вашими требованиями.

Я надеюсь, что это поможет Вам

person KAREEM MAHAMMED    schedule 03.01.2012
comment
Большое спасибо за ответ, осуществлю и свяжусь с вами :) - person Eshwar Chaitanya; 03.01.2012
comment
У меня есть кнопка в представлении 1, когда я нажимаю кнопку, появляется представление выбора кнопки, затем, когда пользователь выбирает строку, он переходит к контроллеру представления 2 с табличным представлением, отображающим напоминания, соответствующие строке, выбранной из представления выбора в предыдущем представлении. Я сделал все, что вы предложили, т.е. selectedString= [arrayNo objectAtIndex:row]; и назначил его контроллеру строкового представления2, т.е. sec.stringFromPrevView=selectedString; Я отобразил его в консоли, NSLog(@String = %@,sec.stringFromPrevView]. Работает правильно - person Eshwar Chaitanya; 03.01.2012
comment
но когда я использую этот запрос в View2, где мы отображаем данные, т.е. [SELECT * FROM напоминания WHERE Grp = =\%@\,Group]; значение группы отображается как нулевое значение. Следовательно, запрос не работает! Как я могу назначить или укажите строковое значение, которое мы присвоили перед переходом к запросу, пожалуйста, помогите мне, заранее спасибо :) - person Eshwar Chaitanya; 03.01.2012
comment
КАРИМ МАХАММЕД жду вашего ответа, пожалуйста, помогите мне, спасибо :) - person Eshwar Chaitanya; 03.01.2012
comment
Как вы используете значение stringFromPrevView в Yours secondView . Вы назначаете ему строку группы - person KAREEM MAHAMMED; 03.01.2012
comment
Да, это запрос [SELECT * FROM напоминания WHERE Grp = =\%@\,Group]; где Group - это строка, которую я взял в контроллере представления 2, в контроллере представления 2 перед навигацией, я использовал следующий оператор, как вы предложили : strPrintRepeat = [self.groupArray objectAtIndex:row]; friendsReminders.Group = strPrintRepeat; NSLog(@Group = %@,friendsReminders.Group); где strPrintRepeat — это строка, используемая в контроллере представления1, спасибо :) - person Eshwar Chaitanya; 03.01.2012
comment
КАРИМ МАХАММЕД Извините за прерывание еще раз, любые другие альтернативы/предложения, пожалуйста, спасибо за терпение :) - person Eshwar Chaitanya; 03.01.2012
comment
Приведенный выше ответ сработал для мистера Карима, еще раз спасибо за все :) - person Eshwar Chaitanya; 04.01.2012
comment
Я имею в виду, что ответ выше вашего сработал, пожалуйста, посмотрите на галочку для ответа, в любом случае я голосую, потому что логика верна, но стратегия не касается моего требования. Но это работает для какой-то другой задачи, спасибо :) - person Eshwar Chaitanya; 04.01.2012
comment
Нет, я из Гунтура, но сейчас в Хайдарабаде. - person Eshwar Chaitanya; 04.01.2012