【问题标题】:Get selected value of a picker view that is present in different view and use the string in some other view获取不同视图中存在的选择器视图的选定值并在其他视图中使用字符串
【发布时间】:2012-01-03 06:08:23
【问题描述】:

我在视图控制器页面中有一个选择器视图,例如视图控制器 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],

但正如我们所料,它会引发错误,即 row undeclared

我尝试访问数组,因为我已将 groupPicker 组件中的行数分配为 [self.groupArray count],因此我也尝试在 viewController2 中使用该策略,即:

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

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

请帮我提一些宝贵的建议

提前谢谢大家:)

【问题讨论】:

  • 您是否希望从 Pickerview 中获取选定的值以及要在下一个视图中使用的字符串?
  • @KAREEMMAHAMMED 是的,请提供任何建议。感谢您的关注 :)
  • @EshwarChaitanya : 你为什么不用 appDelegate 来做你的应用程序?
  • @iCoder86 我的应用程序已经有了 appDelegate,请建议我现在该做什么,感谢您的评论 :)

标签: iphone uipickerview selectedindex


【解决方案1】:

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

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

yourApplicationDelegate *appDelegate;

第三步:在实现文件中初始化appDelgate如下

appDelegate = [[UIApplication sharedApplication] delegate];

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

就是这样。现在您可以从第一个视图分配值并在第二个视图中访问它。

【讨论】:

    【解决方案2】:

    你可以在Secondview全局声明NSString,最好是按一个按钮,在那个动作中你必须写

    在最火的视图中全局获取一个 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 中使用

    希望对你有帮助

    【讨论】:

    • 非常感谢您的回答将实施并回复您:)
    • 当我单击按钮选择器视图时,我在 view1 中有一个按钮,然后当用户选择行时,它导航到视图控制器 2,其中表视图显示与从选择器视图中选择的行相对应的提醒以前的看法。我做了你所建议的一切,即 selectedString= [arrayNo objectAtIndex:row];并将其分配给字符串视图控制器2,即sec.stringFromPrevView=selectedString;我在控制台中显示它,NSLog(@"String = %@",sec.stringFromPrevView].Working 正确
    • 但是当我在 View2 中使用此查询时,我们会在其中显示数据,即 ["SELECT * FROM 提醒 WHERE Grp = =\"%@\"",Group];组值显示为空值.因此查询不起作用!如何分配或引用我们在导航到查询之前分配的字符串值,请帮助我,提前谢谢:)
    • KAREEM MAHAMMED 正在等待您的回复,请帮助我,谢谢 :)
    • 您如何在 Yours secondView 中使用 stringFromPrevView 值。您是否分配给它组字符串
    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多