2017-10-13 2 views
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 *'タイプのオブジェクトに見つかりませんでした。上記のコードに関する問題?

答えて

0

SelectedDataDelegateは、プロトコルの名前です。プロパティの名前はnewsPageDelegateです。

関連する問題