我正在学习用xcode为iphone创建应用程序。我已经这样做了大约2-3周,所以我对此完全陌生。现在我决定制作一个包含不同类型计数器的计数器,每个计数器都有自己的视图。它们之间的导航是通过标签栏完成的。
我有4个视图,最后一个视图应该包含其他3个视图中每个计数器的重置按钮。
有可能吗?在那种情况下,你能指点我正确的方向吗?
现在我正在使用它从同一视图重置计数器
-(IBAction)Reset:(id)sender{
counter = 0;
count.text = [NSString stringWithFormat:@"%i", counter];
我是否可以通过视图4来执行上述操作以重置视图1中的计数器?
答案 0 :(得分:0)
约翰,我怀疑你应该看看NSUserDefaults。如果这是你的第一份作业,那么你的老师会对此不以为然。
老实说,我认为上述习惯是习惯并绕过良好的MVC基础知识。由于您似乎对此不熟悉,因此您应该专注于良好的MVC基础知识:金字塔顶部的View控制器控制其视图。在这种情况下,你还有一个层,其中UITabBarController控制着一堆viewControllers(标签),这些ViewControllers控制它们的视图。
您可以使用UITabBarController的“viewControllers”属性在这些viewControllers(标签)之间移动。
这些viewControllers(UIViewController子类)中的每一个都应该在IB和代码中创建,然后附加到UITabBarController。然后,您应该将IB标识检查器中的这些视图控制器的类更改为相应的UIViewController子类名称。
然后将标签和操作添加到相应的视图控制器,并将它们挂钩到代码中的相应viewcontrollers。
并且您可以使用viewController 4中的[self.tabBarController.viewControllers objectAtIndex:1]来重置视图1上的计数器。
此处没有代码快捷方式。学习适当的MVC,否则它会在以后咬你。
希望这有帮助
答案 1 :(得分:-1)
是的,有可能。但你的问题并不那么明确。根据我的理解,第四个视图有一个名为刷新的按钮,当我们点击按钮时,剩余的3个视图应该被替换为已经开始的内容。
以简单的方式,当您在第四个视图中点击Refresh button
时,release
UITabbarController
并再次添加。
否则需要在所有3个屏幕中调用刷新视图w.r.t UITbabarController Delegate
方法。
答案 2 :(得分:-1)
- (void)refresh
{
NSLog(@"Refresh Data");
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"data_refresh"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
//在所有3个视图中添加此方法
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"data_refresh"] && [[[NSUserDefaults standardUserDefaults] objectForKey:@"data_refresh"] boolValue]) {
count.text = @"0"; // Here you can modify the data as you expected.
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"data_refresh"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}