我正在使用一个名为RootViewController的主控制器和名为DetailViewController的详细控制器的SplitViewController。在我的RootViewController中,我的界面中有一个计时器:
@interface RootViewController : UITableViewController <UISplitViewControllerDelegate> {
UISplitViewController *splitViewController;
UIPopoverController *popoverController;
UIBarButtonItem *rootPopoverButtonItem;
NSTimer *counter;
}
当用户从RootViewController中选择表中的行时,计数器设置如下:
counter = [NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(countdown) userInfo:nil repeats:YES];
因此称为倒计时方法:
-(void)countdown {
DetailViewController *newDetailViewController = [[DetailViewController alloc]init];
newDetailViewController.countdown_timer.text = @"Text Switched";
}
方法中的代码几乎可以在其他任何地方正常工作,无论在倒计时方法中放置什么代码,标签似乎都不会改变。是什么原因导致我无法连接我的DetailViewController标签?
谢谢!
答案 0 :(得分:0)
问题是每次触发计时器时都要创建DetailViewController
的新实例。这是一个内存泄漏。其次,它不会改变DetailViewController
的可见实例。要更改可见实例,必须将其存储在属性或实例变量中。
虽然我不完全确定这会有效但您可以尝试定义这样的countdown
方法,
-(void)countdown {
DetailViewController *detailViewController = [splitViewController.viewControllers objectAtIndex:1];
detailViewController.countdown_timer.text = @"Text Switched";
}
这是未经测试的,应该在理论上有效。如果这样做,则不需要另外的实例变量。