Ios 反犹主义行动根本不起作用
我有一个助手类Ios 反犹主义行动根本不起作用,ios,swift,uibarbuttonitem,Ios,Swift,Uibarbuttonitem,我有一个助手类 class PDFPreviewHelper { var pdfNavigationController: UINavigationController! func previewButtonPressed(rootViewController: UIViewController) { let pdfViewController = PDFViewController(resource: "final.pdf") pdfNaviga
class PDFPreviewHelper {
var pdfNavigationController: UINavigationController!
func previewButtonPressed(rootViewController: UIViewController) {
let pdfViewController = PDFViewController(resource: "final.pdf")
pdfNavigationController = UINavigationController(rootViewController: pdfViewController)
let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backButtonPressedInPDF")
pdfViewController.navigationItem.setLeftBarButtonItem(backButton, animated: false)
rootViewController.presentViewController(pdfNavigationController, animated: true, completion: nil)
}
func backButtonPressedInPDF() {
pdfNavigationController.dismissViewControllerAnimated(true, completion: nil)
}
}
我在我的rootviewcontroller中调用上述帮助器类中的函数,如下所示:
func previewInPdfButtonPressed() {
let a = PDFPreviewHelper()
a.viewI129InPDF(self)
}
我成功地将
pdfNavigationController
显示在我的rootViewController
上,但每当我按下back
按钮时,都不会调用任何内容。为什么会这样?我在backButtonPressedInPDF
函数中设置了一个断点,它甚至没有达到断点。我认为问题就在这里
let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backButtonPressedInPDF")
致:
我认为问题在于操作:“backButtonPressedInPDF”
中缺少:
此外,还要通过添加(发件人:AnyObject)
来更改方法吗
func backButtonPressedInPDF(sender:AnyObject) {
pdfNavigationController.dismissViewControllerAnimated(true, completion: nil)
}
您需要通过下面的方式将
leftBarButtonItem
分配给UINavigationController
pdfViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backButtonPressedInPDF")
问题是您正在创建
PDFPreviewHelper
类的临时实例,并使用它来显示视图控制器。没有保留参考资料。
这可以通过两种方式解决:
方法1:将previewInPdfButtonPressed
方法添加到PDFViewController
类中。然后更改实现,如下所示
let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: pdfViewController, action: "backButtonPressedInPDF")
方法2:
您应该保留对象a
,直到您关闭PDFViewController navigationcontroller
。
即使你这样做了,你也会得到这样的例外
2016-03-16 15:43:03.140 XXXX[3757:585277] *** NSForwarding: warning: object 0x7ff5eb72be70 of class 'XXXX.PDFPreviewHelper' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[XXXX.PDFPreviewHelper backButtonPressedInPDF]
这是因为您没有为您的PDFPreviewHelper
子类化NSObject
。
你可以用两种方法修复它
PDFPreviewHelper
作为NSObject
子类动态
函数的关键字,如dynamic func previewInPdfButtonPressed(){..}
a
被释放。您针对a
的操作当然不能再执行了
解决方案将
a
添加为视图控制器的属性
您确定要调用a.viewI129InPDF(self)
@Johnykutty,是的,它确实以模式显示PDFViewController。但是在您的PDFPreviewWhelper
中,您编写的previewButtonPressed
与我的方法相同。@Kahsn请检查您以不同的方式完成的操作!为什么行动是引用的?
2016-03-16 15:43:03.140 XXXX[3757:585277] *** NSForwarding: warning: object 0x7ff5eb72be70 of class 'XXXX.PDFPreviewHelper' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[XXXX.PDFPreviewHelper backButtonPressedInPDF]
func previewInPdfButtonPressed()
{
let a = PDFPreviewHelper()
a.viewI129InPDF(self)
}