0

我在视图控制器页面中有一个选择器视图,例如视图控制器 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 = '%@'-字符串是从前一个视图中的选取器视图中的行组件中选择的值。

我知道有两种可能的访问方式,

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 计数],因此我也尝试使该策略在 viewController2 中起作用,即:

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

那么我如何才能访问在先前视图中存在的选择器视图中选择的行(字符串),以便我可以表现出良好的编程习惯,这对于像我这样的新手来说是一个好兆头:)

请帮我提一些宝贵的建议

提前谢谢大家:)

4

2 回答 2

1

第 1 步:在您的 appDelegate 中获取一个 NSString 变量。

第 2 步:在您的两个视图中创建 appDelegate 的实例是您想要设置值和获取值,如下所示。

yourApplicationDelegate *appDelegate;

第 3 步:在实现文件中初始化 appDelgate,如下所示

appDelegate = [[UIApplication sharedApplication] delegate];

在此语句之后,您可以使用您在应用程序的 appDelegate 中声明的两个视图控制器中的字符串变量。

而已。现在您可以从第一个视图分配值并在第二个视图中访问它。

于 2012-01-04T05:56:42.247 回答
1

您可以全局在 Secondview 中声明 NSString ,最好使用一个按钮,并且在该操作中您必须编写

在 Pickerview 委托方法的最火视图中全局获取 NSString *selectedString

- (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 中使用

我希望这会帮助你

于 2012-01-03T06:29:59.550 回答