2017-10-13 10 views
0

J'ai un délégué personnalisé dans (NewsDetailsVC.swift), où je dois passer le texte de la cellule du tableau sélectionné à une autre classe (MainNewsVC.m) qui est une classe c objective .L'appel d'un délégué personnalisé de la classe swift déclenche l'erreur

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]; 
} 

Dans la méthode ci-dessus lorsque j'ai essayé moi ce délégué personnalisé Je reçois erreur "Propriété 'SelectedDataDelegate' introuvable sur l'objet de type 'NewsDetailsViewController *'". Des problèmes sur le code ci-dessus?

Répondre

0

SelectedDataDelegate est le nom du protocole, la propriété est nommée newsPageDelegate.