如何在iphone中将值从一个标签栏传递到另一个标签栏
Posted
技术标签:
【中文标题】如何在iphone中将值从一个标签栏传递到另一个标签栏【英文标题】:How to pass a value from one tabbar to another in iphone 【发布时间】:2011-07-29 12:11:12 【问题描述】:我正在开发一个标签栏应用程序。在第一个标签中显示一个文本。有一个保存该文本的选项。可以在第三个标签中查看书签(保存)文本。第三个标签栏视图是一个表格视图。标记为书的文本显示在该表格视图中。因此,当我单击每一行时,它应该返回到第一个选项卡,并且将在那里查看相应的文本。我使用推第一个选项卡 ReminderAppDelegate *theDelegate = (ReminderAppDelegate *)[[UIApplication sharedApplication] delegate]; UITabBarController *tabController = theDelegate.tabBarController;
tabController.selectedIndex = 0; 但是我如何才能在第一个视图中查看该特定文本。任何人都可以帮助我。提前谢谢。
【问题讨论】:
【参考方案1】:当您第一次在第一个标签栏中输入文本并且想要保存文本时,您只需将文本存储在 NSString 中并将其添加到 NSMutableArray
。该数组可以放置在您的 appDelegate 中,因此为了保存文本并将其存储在数组中,您可以这样做:
NSString *text = [[NSString alloc] initWithString:textField.text];
ReminderAppDelegate *theDelegate = (ReminderAppDelegate *)[[UIApplication sharedApplication] delegate];
[theDelegate.textArray addObject:text];
现在,当您想在第三个标签栏视图中显示数组时,您只需将该数组用作表格的 dataProvider。 当您按下表格行时,您可以获得数组中的相应索引,并在第一个标签栏中设置文本以显示该数组索引的文本。
【讨论】:
。非常感谢。所以在这里我们必须使用 NSUserdefaults 保存和检索 textArray? 我不明白你为什么要使用 NSUserdefaults 来处理与此相关的任何事情? 是的,我们可以使用该数组作为表的源。但是我怎么能在第三个标签栏的第一个标签栏的视图中设置文本呢? 然后你使用委托方法- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
,通过indexPath.row
查看用户选择了表中的哪一行。然后,您可以通过说 NSString *text = [theDelegate.textArray objectAtIndex:indexPath.row];
从 textArray 中获取要显示在第一个标签栏上的文本,现在您有了文本,然后只需使用该文本设置第一个标签栏文本字段。
是的,我理解所有这些并在 Nsstring *text 中获取了文本。但是我如何访问第一个选项卡中的文本视图以从第三个选项卡中设置此文本。文本视图设置为第一眼看到的出口。【参考方案2】:
与从应用代理共享标签栏的方式相同,您可以通过应用代理在标签之间共享一个 NSString。
或者,您可以使用NSUserDefaults
为共享字符串设置属性。当viewDidAppear
和viewDidDisappear
时触发属性的读/写。
使用静态变量是 Mannan 所说的另一种方式。
【讨论】:
,我们已经尝试过使用 NSUserDefaults 但徒劳无功。您能否提供有关如何在选项卡之间共享 NSString 的代码详细信息。 你是否更新了文本,在视图中相应的标签栏及其视图控制器确实出现和消失了?您是否调试过调用方法并更新文本? Senorina,请看我的回答,您需要将字符串存储在一个数组中以显示所有输入的字符串。然后,要特别查看一个,您可以通过在表格视图中按一行从数组中选择一个。【参考方案3】:尝试制作一个单例 .. 类似 ApplicationData ... 这样您就可以为想要保存和传递的所有内容创建一个属性。
例如,在选项卡 1 中,您将转到 [ApplicationData instance].stringToSave = @"something",而在选项卡 3 中,如果您调用 [ApplicationData instance].stringToSave,它将返回 @"something"
【讨论】:
以上是关于如何在iphone中将值从一个标签栏传递到另一个标签栏的主要内容,如果未能解决你的问题,请参考以下文章
在 SWIFT 语言的 Storyboard 中将值从一个 ViewController 传递到另一个 ViewController
使用 Struts 2 在项目中将查询字符串中的键值从一个页面传递到另一个页面