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

У меня есть представление выбора на странице контроллера представления, скажем view controller1. Теперь у меня есть требование доступа к выбранному строковому значению из этого представления выбора в другом контроллере представления, скажем, контроллер представления 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],

но, как мы можем ожидать, он выдает ошибку, т.е. необъявленная строка ,

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

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

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

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

Спасибо всем заранее :) 1030 *

Ответы [ 2 ]

1 голос
/ 04 января 2012

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

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

appDelegate = [[UIApplication sharedApplication] delegate];

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

1 голос
/ 03 января 2012

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

Возьмите NSString * selectedString глобально в режиме Firest в методе делегирования 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 согласно вашему требованию

Надеюсь, это поможет Вам

...