আমি ইউআইভিউকন্ট্রোলারের সাবক্লাসের জন্য কাস্টম ডিআইডি লেখার জন্য সমস্যা বোধ করছি, মূলত আমি সম্পত্তি পছন্দ হিসাবে সরাসরি স্থাপনের চেয়ে ভিউকন্ট্রোলারের জন্য init পদ্ধতির মাধ্যমে নির্ভরতাটি পাস করতে চাই want viewControllerB.property = value
তাই আমি আমার ভিউকন্ট্রোলারের জন্য একটি কাস্টম ডিআই তৈরি করেছিলাম এবং সুপার ডিজাইনেড ডিএম কল করি
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
ভিউ কন্ট্রোলার ইন্টারফেসটি স্টোরিবোর্ডে থাকে, আমি কাস্টম ক্লাসের জন্য আমার ভিউ নিয়ন্ত্রক হওয়ার জন্য ইন্টারফেসও তৈরি করেছি। আপনি যদি এই পদ্ধতির মধ্যে কিছু না করেও সুইফ্টকে এই ডিআইডি পদ্ধতিটি কল করতে হবে। অন্যথায় সংকলক অভিযোগ করবে ...
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
সমস্যাটি তখন যখন আমি আমার কাস্টম MyViewController(meme: meme)
টিআইএমকে কল করার চেষ্টা করি এটির সাথে আমার ভিউকন্ট্রোলারের কোনও বৈশিষ্ট্যই আরম্ভ করা হয় না ...
আমি ডিবাগ করার চেষ্টা করছিলাম, আমি আমার ভিউকন্ট্রোলারে খুঁজে পেয়েছি, init(coder aDecoder: NSCoder)
প্রথমে কল করুন, তারপরে আমার কাস্টম ডিআই পরে কল করা হবে। তবে এই দুটি init পদ্ধতি বিভিন্ন self
মেমরি ঠিকানা ফেরত দেয় ।
আমি আমার viewController জন্য Init সঙ্গে কিছু ভুল ধারণা করছি, এবং এটা সবসময় ফিরে আসবে self
সঙ্গে init?(coder aDecoder: NSCoder)
, যা, কোন প্রয়োগ করা হয়েছে।
আপনার ভিউকন্ট্রোলারের জন্য কীভাবে কাস্টম ডিআইএম তৈরি করতে হয় তা কি কেউ জানেন? দ্রষ্টব্য: আমার ভিউকন্ট্রোলারের ইন্টারফেসটি স্টোরিবোর্ডে সেট আপ হয়েছে
এখানে আমার ভিউ নিয়ন্ত্রণকারী কোড:
class MemeDetailVC : UIViewController {
var meme : Meme!
@IBOutlet weak var editedImage: UIImageView!
// TODO: incorrect init
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
/// setup nav title
title = "Detail Meme"
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
editedImage = UIImageView(image: meme.editedImage)
}
}