0
カスタムデリゲートを(NewsDetailsVC.swift)、選択したテーブルセルテキストを別のクラス(MainNewsVC.m)に渡す必要があります。目的クラスCクラスのスウィフトクラスのカスタムデリゲートを呼び出すとエラーが発生する
NewsDetailsVC.swift
@objc protocol SelectedDataDelegate {
func valuePassed(dataString: String)
}
class NewsDetailsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
weak var newsPageDelegate: SelectedDataDelegate?
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let selectedCell = tableView.cellForRow(at: indexPath)
let storyboard = UIStoryboard(name: "MainNewsPage", bundle: nil)
mainVC = storyboard.instantiateViewController(withIdentifier: "MainNews") as! MainNewsViewController
mainVC.passedValue = selectedCell?.textLabel?.text
print("text label value: ", mainVC.passedValue)
newsPageDelegate?.valuePassed(dataString: mainVC.passedValue)
print("text from delegates: ", (dataString: mainVC.passedValue))
}
上記の方法ではMainNewsVC.h
@protocol SelectedDataDelegate <NSObject>
@end
@interface MainNewsViewController : UIViewController<UITextFieldDelegate,UIScrollViewDelegate, SelectedDataDelegate > {
NSString *newsValue;
BOOL isFromSelection;
}
@property (nonatomic, assign) id <SelectedDataDelegate> receiveNewsDelegate;
-(void)valueChanged:(NSString *)newsString delegate:(id<SelectedDataDelegate>)theDelegate;
MainNewsVC.m
@synthesize receiveNewsDelegate;
-(void)selectQuestion:(UITapGestureRecognizer *) sender
{
CGPoint touchLocation = [sender locationOfTouch:0 inView:newsTable];
newIndexPath = [newsTable indexPathForRowAtPoint:touchLocation];
newsDetailsVC = [NewsDetailsViewController instantiate];
newsDetailsVC.SelectedDataDelegate = self;
[self presentViewController:selectQuestionVC animated:YES completion:nil];
}
-(void) valuePassed:(NSString *)newsString receiveNewsDelegate:(id<SelectedDataDelegate>)theDelegate {
[newsTable reloadData];
newsValue = newsString;
NSLog(@"newsValue: %@", newsValue);
isFromSelection = YES;
self.receiveNewsDelegate = theDelegate;
[newsTable reloadData];
}
私は、カスタムデリゲートIのようにエラーが発生しますことを、自己を試してみました"プロパティ 'SelectedDataDelegate'が 'NewsDetailsViewController *'タイプのオブジェクトに見つかりませんでした。上記のコードに関する問題?