从 swift 代码遵守 Objective 中定义的协议时出错
Error in conforming to a protocol defined in Objective from swift code
我有以下 header ReaderViewController.h
#import <UIKit/UIKit.h>
#import "ReaderDocument.h"
@class ReaderViewController;
@protocol ReaderViewControllerDelegate <NSObject>
@optional // Delegate protocols
- (void)dismissReaderViewController:(ReaderViewController *)viewController;
@end
@interface ReaderViewController : UIViewController
@property (nonatomic, weak, readwrite) id <ReaderViewControllerDelegate> delegate;
- (instancetype)initWithReaderDocument:(ReaderDocument *)object;
@end
在 swift 文件中
class DetailTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource {
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Get the row data for the selected row
var phrase: String = "" ;
var document:ReaderDocument? = ReaderDocument(filePath: "/Users/Krishna/Development/XXXX/Reader.pdf", password: phrase);
if(document != nil){
var readerViewController:ReaderViewController = ReaderViewController(readerDocument: document)
readerViewController.delegate = self ;
readerViewController.modalTransitionStyle = .CrossDissolve;
readerViewController.modalPresentationStyle = .FullScreen;
self.presentViewController(readerViewController, animated: true, completion: nil)
}
func dismissReaderViewController(viewController: ReaderViewController) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
对于行 readerViewController.delegate = self ; Xcode 抛出
的编译时异常
类型 'DetailTableViewController' 不符合协议 'ReaderViewControllerDelegate'。
我尝试为其他类似帖子寻找解决方案,但无法找出问题所在。
感谢任何帮助,因为我是 iOS 平台的新开发人员!
只需将 ReaderViewControllerDelegate
添加到 DetailTableViewController
的第一行,因为这会告诉编译器,此 class 符合特定的委托协议。
class DetailTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource, ReaderViewControllerDelegate
我有以下 header ReaderViewController.h
#import <UIKit/UIKit.h>
#import "ReaderDocument.h"
@class ReaderViewController;
@protocol ReaderViewControllerDelegate <NSObject>
@optional // Delegate protocols
- (void)dismissReaderViewController:(ReaderViewController *)viewController;
@end
@interface ReaderViewController : UIViewController
@property (nonatomic, weak, readwrite) id <ReaderViewControllerDelegate> delegate;
- (instancetype)initWithReaderDocument:(ReaderDocument *)object;
@end
在 swift 文件中
class DetailTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource {
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Get the row data for the selected row
var phrase: String = "" ;
var document:ReaderDocument? = ReaderDocument(filePath: "/Users/Krishna/Development/XXXX/Reader.pdf", password: phrase);
if(document != nil){
var readerViewController:ReaderViewController = ReaderViewController(readerDocument: document)
readerViewController.delegate = self ;
readerViewController.modalTransitionStyle = .CrossDissolve;
readerViewController.modalPresentationStyle = .FullScreen;
self.presentViewController(readerViewController, animated: true, completion: nil)
}
func dismissReaderViewController(viewController: ReaderViewController) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
对于行 readerViewController.delegate = self ; Xcode 抛出
的编译时异常类型 'DetailTableViewController' 不符合协议 'ReaderViewControllerDelegate'。 我尝试为其他类似帖子寻找解决方案,但无法找出问题所在。 感谢任何帮助,因为我是 iOS 平台的新开发人员!
只需将 ReaderViewControllerDelegate
添加到 DetailTableViewController
的第一行,因为这会告诉编译器,此 class 符合特定的委托协议。
class DetailTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource, ReaderViewControllerDelegate