Tableview hujayra taglavhasi

Men foydalangan chog'imda mening jadval ko'rinishidagi hujayra taglavhalari ko'rsatilmaydi:

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

var cell:UITableViewCell?

if tableView.tag == 1 {

    guard let latestCell = tableView.dequeueReusableCell(withIdentifier: "latestCell") else {
        return UITableViewCell(style: .subtitle, reuseIdentifier: "latestCell")
    }



    latestCell.textLabel?.text = latest[indexPath.row]

    latestCell.detailTextLabel?.text = latestSub[indexPath.row]

    latestCell.accessoryType = .disclosureIndicator

    return latestCell


}

} Ammo keyin men buni ishlatsam:

else if tableView.tag == 2 {

    let olderCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "olderCell")



    olderCell.textLabel?.text = older[indexPath.row]

    olderCell.detailTextLabel?.text = olderSub[indexPath.row]

    olderCell.accessoryType = .disclosureIndicator

    return olderCell
}

else {
    return cell!
}

} Subtitrlar juda yaxshi yuklaydi, lekin ilovani yopib, ko'rinishni qayta tiklagandan so'ng, dastur buzilmasin logini bermasdan yoki disk raskadrovka-yorlig'iga olib borishni xohlamaydi.

Men ma'lumotlardan olingan kataloglar yaxshi ekanini bilaman va o'ylaymanki, men har bir narsani hikoyalar panelida o'rnatganman. Mavzu bo'yicha bir qancha o'xshash savollar allaqachon joylashtirilgan, ammo ularning hammasi cellStyle-ni .subtitle-ga qo'yishni unutishga kelishadi. Olgan yordamim uchun rahmat!

BTW. Mening oddiy hujayra sarlavhalari xuddi men istaganim kabi ishlaydi. Hech qanday muammo yo'q.

EDIT:

Muammo shundaki, men hech qanday muammosi bo'lmagan standart uslubli hujayra yaratishim mumkin. Lekin keyin uslubni .subtitle deb belgilashga harakat qilsam, u birinchi marta to'g'ri ishlaydi, lekin ikkinchi marta ochilganda, bu qulaydi. Ushbu ikkala deklaratsiyani bir-birlarini bartaraf qilmaslik uchun birgalikda ishlatishning usullari bormi ?;

guard let latestCell = tableView.dequeueReusableCell(withIdentifier: "latestCell") else {
    return UITableViewCell(style: .subtitle, reuseIdentifier: "latestCell")
}

va:

let latestCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "latestCell")

Hujjatlar panelida kameralar qanday qilib yaratilganligi haqidagi havola:

0
Sizda narsalarni qo'riqlab turing, hujayraning xususiyatlarini belgilamasdan qaytarsin. Ikkinchi kod hujayrani qayta ishlatmaydi (tavsiya etilmaydi).
qo'shib qo'ydi muallif Larme, manba
Sizda narsalarni qo'riqlab turing, hujayraning xususiyatlarini belgilamasdan qaytarsin. Ikkinchi kod hujayrani qayta ishlatmaydi (tavsiya etilmaydi).
qo'shib qo'ydi muallif Larme, manba
do'stim sizdan so'rashi mumkinmi? Ikkita jadval ko'rinishini ishlatasizmi?
qo'shib qo'ydi muallif mukesh_lokare, manba
do'stim sizdan so'rashi mumkinmi? Ikkita jadval ko'rinishini ishlatasizmi?
qo'shib qo'ydi muallif mukesh_lokare, manba
do'stim sizdan so'rashi mumkinmi? Ikkita jadval ko'rinishini ishlatasizmi?
qo'shib qo'ydi muallif mukesh_lokare, manba
Ha, men ikkitadan foydalanmoqdaman.
qo'shib qo'ydi muallif Tuomax, manba
Muammoni hal qildim, jadval ko'rinishi to'g'ri qayta tiklanmaganligini aniqladim. Men jadval ko'rinishini faollashtiradigan ko'rsatmalarning tartibini o'rnatganimdan so'ng, uni tuzatdi. Hammaga javob berganingiz uchun tashakkur!
qo'shib qo'ydi muallif Tuomax, manba
Muammoni hal qildim, jadval ko'rinishi to'g'ri qayta tiklanmaganligini aniqladim. Men jadval ko'rinishini faollashtiradigan ko'rsatmalarning tartibini o'rnatganimdan so'ng, uni tuzatdi. Hammaga javob berganingiz uchun tashakkur!
qo'shib qo'ydi muallif Tuomax, manba
Ha, men ikkitadan foydalanmoqdaman.
qo'shib qo'ydi muallif Tuomax, manba
Ha, men ikkitadan foydalanmoqdaman.
qo'shib qo'ydi muallif Tuomax, manba

7 javoblar

Bunga quyidagicha amal qiling:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("latestCell") as UITableViewCell

    cell.textLabel?.text = latest[indexPath.row]
    cell.detailTextLabel?.text = latestSub[indexPath.row]
    cell.accessoryType = .disclosureIndicator

    return cell

}

Muammoni hal qilsangiz, buni buni hal qilish/o'chirish deb belgilang.

0
qo'shib qo'ydi
Men buni cellStyle-ni subtitrga o'rnatmasligidan qo'rqaman, shuning uchun farq qilmaydi.
qo'shib qo'ydi muallif Tuomax, manba

Bunga quyidagicha amal qiling:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("latestCell") as UITableViewCell

    cell.textLabel?.text = latest[indexPath.row]
    cell.detailTextLabel?.text = latestSub[indexPath.row]
    cell.accessoryType = .disclosureIndicator

    return cell

}

Muammoni hal qilsangiz, buni buni hal qilish/o'chirish deb belgilang.

0
qo'shib qo'ydi
Men buni cellStyle-ni subtitrga o'rnatmasligidan qo'rqaman, shuning uchun farq qilmaydi.
qo'shib qo'ydi muallif Tuomax, manba

Bunga quyidagicha amal qiling:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("latestCell") as UITableViewCell

    cell.textLabel?.text = latest[indexPath.row]
    cell.detailTextLabel?.text = latestSub[indexPath.row]
    cell.accessoryType = .disclosureIndicator

    return cell

}

Muammoni hal qilsangiz, buni buni hal qilish/o'chirish deb belgilang.

0
qo'shib qo'ydi
Men buni cellStyle-ni subtitrga o'rnatmasligidan qo'rqaman, shuning uchun farq qilmaydi.
qo'shib qo'ydi muallif Tuomax, manba

Eng oson echim:

Interfeysni yaratuvchisi interfeysida to'g'ridan-to'g'ri jadval ko'rinishida ikkala xujayrasini loyihalashtirish, uslubni va aksessuar ko'rinishini kerakli qiymatlarga o'rnating va identifikatorlarni qo'shing.

Keyin kodni qisqartirish mumkin.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   switch tableView.tag {
   case 1:
   let latestCell = tableView.dequeueReusableCell(withIdentifier: "latestCell" for: indexPath)
      latestCell.textLabel!.text = latest[indexPath.row]
      latestCell.detailTextLabel!.text = latestSub[indexPath.row]
      return latestCell

   case 2:
      let olderCell = tableView.dequeueReusableCell(withIdentifier: "olderCell" for: indexPath)
      olderCell.textLabel!.text = older[indexPath.row]
      olderCell.detailTextLabel!.text = olderSub[indexPath.row]
      return olderCell

   default: 
      fatalError("That should never happen")
   }

}

Hujayralar subtitr uslubiga oldindan belgilab qo'yilganligi uchun ham textLabel va detailTextLabel mavjudligi kafolatlangan va xavfsiz tarzda ochilishi mumkin.

Ammo hujayralar orasidagi muhim farq nima? Ushbu koddan aslida bitta hujayradan (identifikator cell ) foydalanishingiz mumkin. Kodni yana ham qisqartirishi mumkin:

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

   let cell = tableView.dequeueReusableCell(withIdentifier: "cell" for: indexPath)

   if tableView.tag == 1 {
      cell.textLabel!.text = latest[indexPath.row]
      cell.detailTextLabel!.text = latestSub[indexPath.row]
   } else {
      cell.textLabel!.text = older[indexPath.row]
      cell.detailTextLabel!.text = olderSub[indexPath.row]
   }
   return cell
}
0
qo'shib qo'ydi
Agar uslub Interface Builder'da o'rnatilsa, u qayta ishlatilgan xonada ko'rinishi kerak.
qo'shib qo'ydi muallif vadian, manba
Yo'q, yo'q. Haydovchini ishlating. Kesish nuqtalarini aniqlang.
qo'shib qo'ydi muallif vadian, manba
So'ngra jadval ko'rinishidagi dizayn bilan bog'liq emas.
qo'shib qo'ydi muallif vadian, manba
Siz ikkita jadval ko'rinishida bo'lganingizdan so'ng, latestCell / olderCell identifikatorini ishlatishni tavsiya qilaman.
qo'shib qo'ydi muallif vadian, manba
Ha, uslubni stsenariyga o'rnatgan bo'lsangiz, u paydo bo'ladi va uni kodga qo'yish shart emas. Ammo ikkala jadval ko'rinishida hujayralarni loyihalashingiz kerak.
qo'shib qo'ydi muallif vadian, manba
Xo'sh, unda nima borligini bilasizmi? Juda faol bo'lishingiz uchun tashakkur!
qo'shib qo'ydi muallif Tuomax, manba
Oh, uzr so'rayman, ba'zi javoblarni aralashtirib yuborishim kerak, aslida subtitrlarni ko'rsataman, lekin ilovani yopib, uni qayta ochganimda, u to'xtaydi. Afsuslanish uchun uzr so'rayman.
qo'shib qo'ydi muallif Tuomax, manba
Men xabarni tahrir qildim, mening hikoyamdagi skrinshot bilan bog'liqlik bor, men protetib hujayraning har ikkalasini shu tarzda o'rnatdim, u hali ham ishlamaydi.
qo'shib qo'ydi muallif Tuomax, manba
Siz bu bilan nima demoqchisiz? Kechirasiz, men tushunmayapman. Agar siz hikoyangizdagi xujayoda o'rnatilgan uslubni nazarda tutsangiz, ha, u erda paydo bo'ladi.
qo'shib qo'ydi muallif Tuomax, manba
Bu uslub subtitrga o'rnatilmagan, shuning uchun u erda imkoniyat yo'q va men allaqachon hikoyalar panelida hujayralarni to'g'ri qo'ygan edim. Ammo harakat qilganingiz uchun tashakkur!
qo'shib qo'ydi muallif Tuomax, manba
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") //replace "Cell" with your identifier
    cell.textLabel = yourTitleArray[indexPath.row]
    cell.detailTextLabel = yourSubtitleArray[indexPath.row]
    return cell!
}
0
qo'shib qo'ydi
Qanday xatoga yo'l olasiz?
qo'shib qo'ydi muallif Dimitrie-Toma Furdui, manba
Kechirasiz, ishlamadingiz, ilova quladi.
qo'shib qo'ydi muallif Tuomax, manba
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") //replace "Cell" with your identifier
    cell.textLabel = yourTitleArray[indexPath.row]
    cell.detailTextLabel = yourSubtitleArray[indexPath.row]
    return cell!
}
0
qo'shib qo'ydi
Qanday xatoga yo'l olasiz?
qo'shib qo'ydi muallif Dimitrie-Toma Furdui, manba
Kechirasiz, ishlamadingiz, ilova quladi.
qo'shib qo'ydi muallif Tuomax, manba
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") //replace "Cell" with your identifier
    cell.textLabel = yourTitleArray[indexPath.row]
    cell.detailTextLabel = yourSubtitleArray[indexPath.row]
    return cell!
}
0
qo'shib qo'ydi
Qanday xatoga yo'l olasiz?
qo'shib qo'ydi muallif Dimitrie-Toma Furdui, manba
Kechirasiz, ishlamadingiz, ilova quladi.
qo'shib qo'ydi muallif Tuomax, manba