iOS跨控制器进行通信

时间:2013-05-20 15:46:10

标签: ios

我有一个非常简单的选项卡式应用程序,其中包含两个选项卡“当前信息”和“设置”。在设置选项卡中,您可以配置轮询服务以获取信息的频率。配置轮询后,应用程序将轮询服务并更新“当前信息”选项卡中的信息。

可能是简单的问题。我有一个用于设置面板的TableViewController。

#import <UIKit/UIKit.h>

@interface SettingsViewController : UITableViewController <UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *refreshRateTextField;

@property (copy, nonatomic) NSNumber *refreshRate;

@end

将refreshRate传递给其他ViewController的推荐方法是什么?这不重要,但另一个ViewController也是一个TableViewController。因为当前信息面板需要更新它轮询的时间间隔,如果设置改变了,我可能想要向CurrentInfoController发送一个事件,以便它可以更新它的间隔。

我对iOS很新(这是我想写的一个简单的启动应用程序)。因为这样一个高级别的答案或指向我这方面的苹果文档会一路走来,只需要了解如何开始。

还忘了提到我正在使用故事板,很多MVC示例都使用nib文件。

感谢。

2 个答案:

答案 0 :(得分:0)

与其他视图控制器通信时,您可以使用NSNotifications,但在这种情况下,NSUserDefaults可以很好地完成任务。

答案 1 :(得分:-1)

我认为,根据您的具体情况,将refreshRate存储在NSUserDefaults中是可行的方法。然后,您可以从应用内的任何位置检索它。

NSNumber(对象)保存到NSUserDefaults

[[NSUserDefaults standardUserDefaults] setObject:refreshRate forKey:@"savedRefreshRate"];

NSNumber检索NSUserDefaults

NSNumber refreshRate = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedRefreshRate"];

该代码应该适用于您的情况,但我仍然会发布一个指向类引用的链接。你应该习惯于阅读它们,因为它是学习iOS开发时的宝贵资源。

有关详细信息,请参阅NSUserDefaults class reference