Ios 到达另一个viewcontroller文件中的函数?
我使用本教程制作了一个popupviewcontroller: 我希望当我按下带有重试按钮的弹出窗口时,它会返回到原来的Viewcontroller,就像它那样,但也会在原来的Viewcontroller上自动重新启动游戏。所以基本上我想在弹出窗口上按Retry键时开始游戏。但我只有在尝试达到该功能时才会出错 原始视图控制器:Ios 到达另一个viewcontroller文件中的函数?,ios,swift,Ios,Swift,我使用本教程制作了一个popupviewcontroller: 我希望当我按下带有重试按钮的弹出窗口时,它会返回到原来的Viewcontroller,就像它那样,但也会在原来的Viewcontroller上自动重新启动游戏。所以基本上我想在弹出窗口上按Retry键时开始游戏。但我只有在尝试达到该功能时才会出错 原始视图控制器: var time : Float = 0.0 var timer: NSTimer? @IBOutlet weak var progressBar:
var time : Float = 0.0
var timer: NSTimer?
@IBOutlet weak var progressBar: UIProgressView!
override func viewDidLoad() {
super.viewDidLoad()
startGame()
}
func startGame() {
startTimer()
}
func startTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(0.001, target: self, selector:#selector(GameViewController.setProgress1), userInfo: nil, repeats: true)
}
func setProgress1() {
time += 0.001
progressBar.setProgress(time / 2, animated: true)
if time >= 1.9 {
endPopUp()
timer!.invalidate()
progressBar.setProgress(0.0, animated: false)
setProgress1(time = 0.0)
}
}
func endPopUp() {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("endPopUpID") as! PopUpViewController
self.addChildViewController(popOverVC)
popOverVC.view.frame = self.view.frame
self.view.addSubview(popOverVC.view)
popOverVC.didMoveToParentViewController(self)
}
}
如您所见,当时间达到1.9时,popOverVC应该出现,但当弹出窗口用popOverVC中的按钮关闭时,我想键入:
GameViewController.startName
但这只是给了我错误。。。我该怎么做 我不是斯威夫特人,但对于objective-c和斯威夫特,下面的概念是一样的。代码示例在objective-c中 待办事项: 在PopOverviewController头文件中声明协议。根据您的状态,您需要如下协议方法
@protocol PopOverViewControllerDelegate
-(void)popOverRetryBtnPressed;
-(void)popOverCloseBtnPressed;
@end
在头文件中声明一个属性,如下所示
@interface PopOverViewController:UIIViewController
...//other staff
@property id<PopOverViewControllerDelegate> myDelegate;
@end
同样,完成关闭按钮功能。现在,将视图控制器中的代理实现为任何其他代理。别忘了设置popOverViewController的myDelegate属性
引擎盖下:
下面是使用委托模式时发生的情况。当一个协议被声明时,它包含的信息是,对象在实现这个协议时能够提供什么。假设在上面的示例中,我们的协议是这样的,符合此协议的对象将包含两个名为popoverretrybtnpress和popoverclosebtnppressed的函数。然后我们声明一个id类型的属性,它表示符合协议声明PopOverViewControllerDelegate的任何类。设置此属性将包含对符合并实现委托方法的对象的引用。现在是在适当的地方调用这些协议方法的时候了。在重试按钮操作中,调用popoveretrybtnpressed,并以相同的方式调用popOverCloseBtnPressed。现在在调用check之前,self.myDelegate对象实际上实现了您正在调用的任何方法,否则它将崩溃
仅此而已,希望您喜欢。我知道什么是代表。但是我需要帮助如何在这个场景中使用它。因此,更详细一点的帮助将意味着很多。谢谢,但我需要更多的帮助:/我想我需要找其他地方。如果您发布了关于代码中错误的问题,您需要在问题中包含这些错误。
-(IBAction)onPressRetry:(id)sender
{
if(self.myDelegate && [self.myDelegate respondToSelector:@selector(popOverRetryBtnPressed)])
{
[self.myDelegate popOverRetryBtnPressed];
}
else
{
NSLog(@"delegate not implemented");
}
}