كيفية الوصول إلى textLabel في خلية ثابتة

0

بعد الكثير من البحث والقراءة ، لا أتيت للأسف مما يلي. أريد استخدام جداول ثابتة لعرض بيانات معينة. (هل هناك خيارات أفضل؟)

في رأيي ، قمت أولاً بوضع صورة بصل مع عرض الحاوية تحتها. يشير عرض الحاوية مرة أخرى إلى وحدة تحكم عرض الجدول.

لقد صنعت مخرجًا من الخلايا ثم اعتقدت أنه يمكنني تعديل النص بسهولة.

الآن أريد تغيير نص الحقول في الجدول ، لكن للأسف لم أنجح.

عندما أبدأ التطبيق ، يكون الجدول فارغًا تمامًا كما يظهر في لقطة الشاشة.

ما الخطأ الذي افعله ؟

Imagen 91

class TableViewController: UITableViewController {
    var data: [String] = ["Muis", "Aap", "Koe", "Vis"]

override func viewDidLoad() {

    super.viewDidLoad()
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return data.count

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    let iets = data[indexPath.row]
    cell.textLabel?.text = iets

    return cell
    }
}

4 الاجابة

1
افضل جواب

إذا كنت ترغب في استخدام الخلايا الثابتة

  • ننسى dequeueing UITableViewCell المثيلات وجميع طرق مصدر بيانات tableview وطرق التفويض.
  • في Interface Builder ، حدد عرض الجدول وحدد Static Cells من Content يظهر فجأة
  • اسحب كمية الخلايا الثابتة التي تحتاجها في اللوحة
  • في تحكم العرض تعلن IBOutlet s وربطها مباشرة بعناصر واجهة المستخدم في الخلايا
:مؤلف
1
افضل جواب

تحتاج إلى تغيير طريقة تفكيرك لهذا. أنت لا تملك الخلايا UITableView هل. سيوفر الخلايا كما يبدو مناسبًا باستخدام تطبيقاتك UITableViewDataSource :

  • func numberOfSections(in: UITableView) -> Int
  • func tableView(UITableView, numberOfRowsInSection: Int) -> Int
  • func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

عادة ، يتم الاحتفاظ بالنصوص (بياناتك الفعلية) في قائمة متاحة لمصدر البيانات هذا.

مثال:

var data: [String] = []

// Other functions

func numberOfSections(in: UITableView) -> Int {
    return 1
}

func tableView(UITableView, numberOfRowsInSection: Int) -> Int {
    return data.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "YOUR_IDENTIFIER")
    cell.text = data[indexPath.row]
    return cell
}

الآن ، إذا كنت تريد تغيير نص هذه الخلية ، فكل ما عليك فعله هو تحديث قائمة بياناتك وإعادة تحميل البيانات.

:مؤلف
0

ما فعلته بعد الكثير من الاختبارات والقراءة. لقد قمت بإنشاء مقطع لفئة القانون.

if (segue.identifier == "myEmbeddedSegue") {
        let childViewController = segue.destination as! hondDetialTableViewController
        childViewController.hondId = hondData["hondId"]!
    }

في هذا الفصل ، أرسل فقط hondId ، وكل شيء آخر أطلبه من الكيانات.

:مؤلف
0

أنا آسف ولكن هذا لا يعمل على الإطلاق في كيفية عمل UITableView. إن UITableViewCell الذي تحدده في Xib / Storyboard ضمن عرض tabl ما هو إلا "نماذج" أو قوالب ، فهي غير موجودة بالفعل حتى تقوم بإنزالها.

يمكنك قراءة كيفية عمل UITableView هنا: http://www.thomashanning.com/uitableview-tutorial-for-beginners/

يجب عليك إرجاع numberOfSections> 0 إذا كنت تريد عرض أي شيء في عرض الجدول الخاص بك ؛ وبالمثل ، يجب أن يحتوي هذا القسم أيضًا على numberOfRows> 0 خلاف ذلك مرة أخرى ، فلن يتم عرض أي شيء (حسنًا ، ربما الرؤوس والتذييلات إذا تم إعدادها بشكل صحيح).

على أي حال ، لا يمكن الوصول إلى الخلايا إلا بعد أن تنزعها. إنشاء منفذ في XIB إلى UITableViewCell غير مفيد في معظم الحالات.

يمكنك استكشاف خيارات أخرى ، مثل UIStackView ، أو ربما ما تحتاجه هو UIView مخصص عادي مع تصنيفات قمت بتعيينها وتخطيطها بشكل صحيح باستخدام NSLayoutConstictions. هناك الكثير من الموارد المتاحة ، وهذا هو أحد الموارد التي سرعان ما بدأناها في Google لكي تبدأ: https://www.youtube.com/watch؟v=de0sthle44I

حظا سعيدا.

:مؤلف
فوق
قائمة طعام