1

신속한 클래스의 표 셀 텍스트 레이블 데이터를 객관적인 C 클래스로 전달하려고합니다. 신속한 수업에서는 다음을 수행했습니다.알림을 사용하여 신속한 객관적인 C 클래스에서 문자열 데이터를 전달하는 방법

class NewsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
@IBOutlet weak var newsTableView: UITableView! 

var myVC:NewsDetailsViewController! 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
    print("selected index :",indexPath.row) 

    let selectedCell = tableView.cellForRow(at: indexPath) 
    print("did select and the text is \(selectedCell?.textLabel?.text)") 
    myVC.passedValue = selectedCell?.textLabel?.text 
    print("text label value: ", myVC.passedValue) 
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "PostQuestion"), object: myVC.passedValue) 
    self.present(myVC, animated: true , completion: nil) 

} 

이제이 문자열 데이터를 목표 C 클래스 인 다른 컨트롤러와 함께 받고 싶습니다. 친절하게 안내합니다.

+0

가능하면

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "PostQuestion"), object: self, userInfo: ["value": myValue] as Dictionary<AnyHashable, Any>) 

로 알림을 보내

func processNotification(notification: NSNotification) { let userInfo = notifcation.userInfo if let value = userInfo?["value"] as? String { ... } } 

또는 같은 같은과 알림에게 그것을 처리해야 그렇지 않으면'NSUserDefaults'를 사용할 수 있습니다. –

+0

미국 아니요. 프로젝트에서 NSUserDefaults가 제한되어 있습니다. 그래서 나는 알림 센터에서 원합니다. – user579911

+0

'userInfo' 사전을 사용하여 데이터를 전달하고'self' (송신자)를'object'의 매개 변수로 사용해야합니다. 'myVC.passedValue'는 올바른 값인가, 아니면'myVC.passedValue'를 사용하지 말아야합니까? – clemens

답변

4

그런 다음 문자열을 전달-C 목표

- (void)processNotification:(NSNotification *)notification { 
    NSString *value = [notifcation.userInfo objectForKey:@"value"] 

    if(value) { 
     ... 
    } 
} 
+0

내 객관적인 C 클래스에서 그것을받는 방법? – user579911

+0

내 게시물을 업데이트했습니다. – clemens

+0

데이터를 보내는 동안이 processNotification 메서드 이름이 필요하지 않습니까? – user579911