ไส้ปากกาที่โหลดแล้ว แต่ไม่ได้ตั้งค่า 'มุมมอง'


742

ฉันเพิ่มไฟล์ปลายปากกาใหม่ลงในโครงการของฉันและพยายามโหลด

อย่างไรก็ตามเมื่อฉันคลิกที่ไอคอนแถบเครื่องมือที่ควรพาฉันไปที่มุมมองที่ฉันสร้างขึ้นฉันจะได้รับNSInternalInconsistencyExceptionข้อความ:

การยกเลิกแอปเนื่องจากข้อยกเว้น 'NSInternalInconsistencyException' ที่ยังไม่ได้ตรวจสอบเหตุผล: '- [UIViewController _loadViewFromNibNamed: มัด:] โหลดไส้ปากกา "... " แต่ไม่ได้ตั้งค่ามุมมองเต้าเสียบ'

ดังนั้นฉันจึงเปิดไฟล์ปลายปากกาของฉันและฉันเห็นว่าไม่มีการตั้งค่าช่องอ้างอิง อย่างไรก็ตามฉันพยายามคลิกและลากวงกลมสำหรับ "ช่องอ้างอิงใหม่" ไปยังเจ้าของไฟล์ แต่จะไม่ให้ฉัน ... ฉันต้องทำอย่างไรเพื่อให้มุมมองของฉันแสดง


1
ลองทำความสะอาดสิ่งก่อสร้างก่อน
LetynSOFT

ในกรณีของฉันข้อผิดพลาดจริงคือฉันกำหนดวิธีในค่า viewController (- (void) setValue: (NSNumber *) ค่า forKey: คีย์ (NSString *) ที่แทนที่เมธอด ViewController ฉันแก้ไขการเปลี่ยนชื่อวิธีนี้
christian mini

คำตอบ:


1807

พวกคุณพูดถูก แต่เนื่องจากฉันเป็นผู้มาใหม่ฉันใช้เวลาสักครู่ในการคิดขั้นตอนทั้งหมดในการทำเช่นนั้น นี่คือสิ่งที่ทำงานสำหรับฉัน:

  • เปิดไฟล์ XIB ที่ก่อให้เกิดปัญหา
  • คลิกที่ไอคอนของเจ้าของไฟล์ที่แถบด้านซ้าย (รูปบนสุดดูเหมือนกล่องสีเหลือง)
  • หากคุณไม่เห็นแถบด้านข้างขวาให้คลิกที่ไอคอนที่สามด้านบน "มุมมอง" ในแถบเครื่องมือของคุณ นี่จะแสดงแถบด้านข้างขวา
  • ในแถบด้านข้างขวาให้คลิกที่แท็บที่สามซึ่งเป็นแถบที่ดูเหมือนหนังสือพิมพ์
  • ภายใต้ "คลาสที่กำหนดเอง" ที่ด้านบนตรวจสอบให้แน่ใจว่าคลาสเป็นชื่อของ ViewController ที่ควรสอดคล้องกับมุมมองนี้ ถ้าไม่ใช่ให้ป้อน
  • ในแถบด้านข้างขวาคลิกที่แท็บสุดท้าย - อันที่ดูเหมือนวงกลมที่มีลูกศรอยู่
  • คุณควรเห็น "ช่อง" กับ "มุมมอง" ข้างใต้ ลากวงกลมถัดจากวงกลมไปที่ไอคอน "มุมมอง" บนแถบด้านซ้าย (ด้านล่างสุดดูเหมือนสี่เหลี่ยมสีขาวที่มีเค้าร่างสีเทาหนา
  • บันทึก xib และเรียกใช้อีกครั้ง

ฉันประสบปัญหานี้กับโกโก้ด้วยเช่นกันและตราบใดที่มุมมองไม่ได้ถูกโหลด / เพิ่มลงในลำดับชั้นการดูร้านค้าทั้งหมดดูเป็น NIL หลังจากเรียกใช้addSubviewหรือสิ่งที่คล้ายกันทุกสาขาก็เชื่อมต่อกันแล้ว ส่วนที่ตลกของเรื่องราวของฉันคือpo viewcontroller.view.subviewsแสดงวัตถุที่หายไป
Apoc

11
โซลูชันนี้ไม่ทำงานใน Xcode 7.3 อีกต่อไปในขั้นตอนที่ 4 และ 5 ในตัวสร้างส่วนติดต่อให้ลากส่วนควบคุมจากเจ้าของไฟล์ไปยังมุมมองของคุณแทน
PeiweiChen

2
ไม่ได้ผลสำหรับฉัน (ไม่มีส่วนร้านในตัวตรวจสอบการเชื่อมต่อดังนั้นจึงไม่มี "มุมมอง" ใต้ร้านเพื่อเชื่อมต่อ) แต่ +1 สำหรับความพยายามที่คุณใส่ไว้ในคำตอบของคุณ :)
William T. Mallard

2
หากคุณไม่เห็น "มุมมอง" ในร้านค้าคุณสามารถลาก Ctrl จากเจ้าของไฟล์ไปยังมุมมองบนกระดานเรื่องราวได้ เมนูบริบทควรปรากฏพร้อมกับตัวเลือก "มุมมอง"
josef

1
@ WilliamT.Mallard ฉันมีพฤติกรรมเดียวกัน MyViewControllerเป็นคลาสย่อยของคลาสย่อยUIViewControllerและไม่มีviewอยู่ภายใต้ "Outlets" ถ้าฉัน subclass MyViewControllerโดยตรงจากUIViewControllerมุมมองปรากฏ unter "Outlets" ความมหัศจรรย์หรือข้อผิดพลาดของ Xcode
user2319066

201

นี่คือข้อเสนอ Josh Justice แต่เป็นกราฟิก (รูปภาพเป็นของฉัน):

  1. เลือกเจ้าของไฟล์
  2. บนแผงด้านขวาเลือกคลาสที่กำหนดเอง
  3. ป้อนชื่อคลาสที่กำหนดเอง

ป้อนคำอธิบายรูปภาพที่นี่

  1. บนแผงด้านขวาเลือก oultets
  2. ลากมุมมองเต้าเสียบเพื่อดูส่วนประกอบ

ป้อนคำอธิบายรูปภาพที่นี่

ในที่สุด View Controller ได้รับการยกตัวอย่างด้วยรหัสกลิ้ง:

        PTFilterUserVC *aFilterUserVC = [[PTFilterUserVC alloc] initWithNibName:@"FilterVC" bundle:nil];

        //OPTIONAL.This is how 'I' am interested in present the view controller.
        [self.navigationController pushViewController:aFilterUserVC animated:YES];

1
ขอบคุณ Javier Calatrava Llavería ... ช่วยฉันได้มากหลังจากที่กระทบหัวฉันเป็นเวลาหนึ่งชั่วโมง !!!
BharathRao

ยกเลิก Exito muchas gracias
บรูโน่โสสะแท็กด่วน

ฉันพลาดขั้นตอนที่ 5
hamada147

73

ฉันสามารถแก้ไขได้โดยการเชื่อมต่อระหว่างเจ้าของไฟล์กับมุมมองใหม่ ควบคุมการลากจากเจ้าของไฟล์ไปยังมุมมองของคุณ (ใน IB) และเลือกมุมมองจากเมนูป๊อปอัป


62

ไม่ได้ตั้งค่า Identity View - Class Identity หลังจากตั้งค่าเป็นคลาสที่เหมาะสมปัญหาได้รับการแก้ไข


สวัสดี @John ฉันได้ทำสิ่งนี้แล้ว แต่ยังได้รับข้อยกเว้นนี้
Mansuu ....

29

แน่ใจหรือไม่ว่าคุณได้กำหนด UIView (หรือคลาสย่อย) ให้กับคุณสมบัติ "มุมมอง" ของ yourViewController

คลิกขวาที่ "เจ้าของไฟล์" ในบานหน้าต่างด้านซ้ายของ xib สำหรับ yourViewController และตรวจสอบว่ามีการตั้งค่าเต้าเสียบ "มุมมอง" ถ้าไม่ตั้งให้ดู!

สิ่งนี้จะแก้ไขปัญหาอย่างแน่นอน


2
คำตอบที่ชัดเจนและกระชับ
sark9012

15

สำหรับฉันทุกสิ่งที่ระบุไว้ที่นี่https://stackoverflow.com/a/6395750/939501เป็นจริง แต่ก็ยังมีข้อผิดพลาดการขว้างปาเหตุผลที่ฉันสร้างคลาส View ด้วยชื่อ ABCView แล้วลบในภายหลังฉันเพิ่มตัวควบคุมมุมมองเป็น ABCViewController ดังนั้นอย่างใดมันก็หมายถึง ABCView เก่าในตัวควบคุมมุมมองใหม่ฉันต้องลบ ABCViewController และเพิ่มใหม่ที่มีชื่อแตกต่างกันที่แก้ไขปัญหาของฉัน

ขอบคุณ


ยังคงเป็นข้อบกพร่องในปี 2020
Tamás Sengel

15

ฉันมีปัญหาเดียวกันกับ XCode 4.6.3 ฉันเริ่มด้วยการตั้งชื่อไฟล์สองสามไฟล์MySettingsView.hและ.mลบไฟล์เหล่านั้นออกไปMySettingsViewController.hแต่แม้จะพยายามทำตามคำแนะนำส่วนใหญ่ที่กล่าวถึงที่นี่ แต่ก็ยังคงมีข้อผิดพลาดอยู่

2013-07-05 11: 48: 17.205 MyApp [39024: c07] *** การยกเลิกแอปเนื่องจากข้อยกเว้นที่ไม่ได้ตรวจสอบ 'NSInternalInconsistencyException' เหตุผล: '- [UIViewController _loadViewFromNibNamed: บันเดิล: โหลด "MySettingsView" ปลายปากกา ไม่ได้ตั้งค่า '

เห็นได้ชัดว่ายังเป็น "สับสน" พยายามโหลด MySettingsView.xib แทน MySettingsView Controller .xib บางทีการ "ทำในสิ่งที่ฉันหมายถึง" อาจเป็นเหตุผลที่แฟนซี

ดังนั้นฉันจึงแก้ไขปัญหาด้วยการเข้ารหัสชื่อ NIB / XIB ใน MySettingsViewController.m:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}

10

สำหรับทุกคนที่ใช้วิธี xib เพื่อสร้าง UIView และมีปัญหานี้คุณจะสังเกตเห็นว่าคุณไม่มีทางออก "ดู" ใต้เมนูตัวตรวจสอบการเชื่อมต่อ แต่ถ้าคุณตั้งค่าคลาสแบบกำหนดเองของเจ้าของไฟล์เป็น UIViewController แล้วคุณจะเห็นเต้าเสียบ "ดู" ซึ่งคุณสามารถเพียงแค่ CMND เชื่อมต่อเต้าเสียบกับ CustomView


น่ากลัว ขอบคุณมาก. นี่ควรเป็นคำตอบที่ยอมรับได้!
โรมัน

7

ปัญหาของฉันนี้เกิดจากการมีปลายปากกาที่ซ้ำกันในโฟลเดอร์คลาสที่ไม่มีชุดมุมมอง xcode ดูเหมือนจะเลือกหนึ่งปลายปากกาสำหรับบิลด์จากนั้นอีกรุ่นหนึ่งในครั้งต่อไปที่ฉันสร้างโครงการ เพิ่งลบอีกอันหนึ่ง ดูดี. Doh!


6

ใช้เวลามากกว่าชั่วโมงพยายามหาสาเหตุว่าทำไมคุณสมบัติมุมมองของฉันไม่ได้ถูกตั้งค่าในตัวควบคุมมุมมองของฉันเมื่อเริ่มต้นจากปลายปากกา อย่าลืมเรียก "[super initWithNibName ... ]" ภายใน initWithNibName ของคอนโทรลเลอร์มุมมองของคุณ


5

ฉันเพิ่งแก้ไขสิ่งนี้ในของฉัน โครงการขนาดใหญ่สองไฟล์ อันที่หนึ่งคือ "ReallyLargeNameView" และอีกอันหนึ่งคือ "ReallyLargeNameViewController"

จากคำตอบที่ 2 ที่เลือกข้างต้นฉันตัดสินใจว่าฉันควรทำความสะอาดโครงสร้างของฉัน นาดา แต่ฉันก็ยังสงสัยว่า XCode (เพราะฉันมีสองคลาสที่เหมือนกันน่าจะสรุปได้ แต่เอ๊ะ ... ) ดังนั้นคนที่ทำงานไม่ใช่คน ชื่อเจ้าของไฟล์นั้นเป็นเพียงการคัดลอกและวางร้านทำการทดลองใหม่ xCode รีบูตยังคงไม่มีอะไร

ดังนั้นฉันจึงลบคลาสที่มีชื่อคล้ายกัน (ซึ่งเป็นมุมมอง) ในไม่ช้าข้อผิดพลาดใหม่ "ทางออกภายในไม่เชื่อมต่อ" แท้จริงคือ "webView ไม่ใช่ค่าคีย์" blah ... โดยทั่วไปแล้วพูดว่า "Visual Studio's better" อย่างไรก็ตาม ... ฉันลบไฟล์ที่มีชื่อขนาดเล็กลงและแบมก็ใช้งานได้

XCode สับสนโดยไฟล์ที่มีชื่อคล้ายกัน และโครงการมีขนาดใหญ่พอที่จะต้องรีบูตสักเล็กน้อยนั่นอาจเป็นส่วนหนึ่งของมัน

หวังว่าฉันจะได้คำตอบทางเทคนิคมากกว่า "XCode สับสน" แต่ xCode สับสนมากในตอนนี้ ถอนการยืนยันวิธีเดียวกับที่ฉันจะช่วยเด็กตัวเล็ก ใช้งานได้แล้วตอนนี้ :) ควรให้ประโยชน์แก่ผู้อื่นหากสิ่งที่กล่าวมาไม่สามารถแก้ไขได้

อย่าลืมทำความสะอาดงานสร้างของคุณ (โดยการลบตัวจำลองออกด้วย)


4

ฉันยังมีปัญหาเดียวกันและปัญหาของฉันคือฉันเพิ่ม Localization (ภาษาอังกฤษ) อื่น ๆ ลงใน ViewControllers ปลายปากกาดังนั้นแอปของฉันที่มี Localization German ไม่สามารถหาปลายปากกาที่มี Localization English ได้ !! หวังว่านี่จะช่วยใครก็ได้!


4

ฉันประสบปัญหาเดียวกันในขณะที่ลบอ้างอิง xib โดยไม่ได้ตั้งใจและเพิ่มอีกครั้งฉันแก้ไขโดยการเชื่อมต่อระหว่างเจ้าของไฟล์และมุมมองนอกจากนี้ตรวจสอบให้แน่ใจว่าคลาสที่กำหนดเองของ FilesOwner ของคุณคือ viewController ที่คุณคาดหวัง


3

initWithNibName:bundle:สำหรับผมแล้วปัญหาที่เกิดจากการเรียก tableViewsฉันใช้มุมมองตารางเซลล์จากไฟล์จะงอยเพื่อกำหนดรูปแบบรายการที่จะนั่งบน เนื่องจากฉันไม่มีมุมมองจึงไม่มีเหตุผลที่จะขอให้ใครสนใจ แต่ถ้าฉันเรียกinitWithStyle:เมธอดแทนและจากภายในที่นั่นฉันจะโหลดไฟล์ปลายปากกาจากนั้นสิ่งต่าง ๆ ก็ทำงานได้อย่างที่คาดไว้


3

คำตอบก่อนหน้าเกือบแก้ปัญหาสำหรับฉัน แต่ขั้นตอนสุดท้ายก็หายไป

  1. สร้างไฟล์ xib และ swift ที่มีชื่อเดียวกัน

เพิ่มไฟล์ View and Swift

  1. ตั้งค่าเจ้าของไฟล์ให้เป็นคลาสย่อย UIView

ป้อนคำอธิบายรูปภาพที่นี่

  1. ลากเต้าเสียบจากมุมมองไปที่คลาสย่อย UIView ตั้งชื่อเป็น "contentView"

เพิ่ม contentview

  1. เพิ่ม initializer ที่กำหนดเองนี้ดังนั้นเมื่อ xib โหลดมันแนบ contentView

เพิ่ม contentview เป็นมุมมองย่อย

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        Bundle(for: self.classForCoder).loadNibNamed("SampleView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
        contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    }

ตอนนี้ @IBOutlets ที่คุณเพิ่มจะถูกแนบ

ไชโยริชาร์ด


2

ฉันมีปัญหาเดียวกัน แต่มีวิธีแก้ปัญหาที่แตกต่างออกไปเล็กน้อย ปัญหาในกรณีนี้คือคลาสของเจ้าของไฟล์แทนที่จะเป็นคลาสของมุมมอง ในการตั้งค่านี้ฉันต้องคลิกไอคอน "เล่นย้อนหลัง" ที่มุมล่างซ้ายของหน้าต่างตัวสร้างส่วนต่อประสานจากนั้นตัวเลือกที่ปรากฏขึ้นนั้นแยกคุณสมบัติของเจ้าของไฟล์ผู้ตอบครั้งแรกและมุมมอง การคลิกที่กล่องแรก (กล่องโปร่งใสขนาดใหญ่) ทำให้ฉันตั้งค่าคลาสแบบกำหนดเองตามที่แนะนำข้างต้น


2

ฉันมีปัญหาเดียวกัน แต่มีวิธีแก้ไขปัญหาที่ต่างออกไป ปัญหาในกรณีนี้คือคลาสของเจ้าของไฟล์ไม่ได้เชื่อมต่อกับไฟล์ xib


2

ฉันพบสิ่งที่คล้ายกันมากในคืนนี้ด้วยคลาสย่อย Swift UIViewController ในกรณีนี้การแก้ปัญหาข้างต้นไม่ได้ผล แต่ทำการสั่งรหัสใหม่อีกครั้ง Net-net การมีส่วนขยายของคลาสย่อยเกิดขึ้นก่อนที่คำจำกัดความของคลาสย่อยเองในไฟล์เดียวกันนั้นดูเหมือนว่าจะสร้างความสับสนให้กับ XCode แม้จะมีการรวบรวมที่ดี การแก้ไขคือการวางส่วนขยายหลังจากคำจำกัดความของคลาสย่อย

ฉันโพสต์รายละเอียดในคำตอบสำหรับคำถามที่คล้ายกันนี้


2

ในกรณีของฉัน initializer ที่กำหนด- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNilในคลาส ViewController *** ถูกนำมาใช้ดังนั้นแม้ว่าเมื่อฉันเรียก initializer อื่น ๆ เพื่อเริ่มต้นวัตถุ initializer ที่กำหนดจะถูกเรียก

ดังนั้นในการแก้ไขปัญหานี้การตรวจสอบสภาพอากาศ- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNilก็เป็นวิธีที่เหมาะสมเช่นกัน


2

ฉันพบปัญหานี้ในวิธีที่แตกต่างจากคำตอบอื่น ๆ เล็กน้อยที่นี่

ถ้าฉันเพิ่งสร้างไฟล์ xib ใหม่เพิ่ม UIViewController ลงใน Interface Builder และตั้งค่าคลาสที่กำหนดเองของ UIViewController ไปยังตัวควบคุมมุมมองของฉันซึ่งส่งผลให้เกิดความผิดพลาด วิธีแก้ปัญหาอื่น ๆ ที่นี่พูดถึงการควบคุม - ลากมุมมองเต้าเสียบไปยังมุมมอง แต่สำหรับฉันเต้าเสียบมุมมองนั้นเป็นสีเทาและฉันไม่สามารถควบคุม - ลากมันได้

เต้ารับมุมมองสีเทา

ฉันพบว่าความผิดพลาดของฉันคือการเพิ่ม UIViewController ใน Interface Builder แต่ฉันต้องเพิ่ม UIView และตั้งค่า Custom Class ของเจ้าของไฟล์เป็นตัวควบคุมมุมมองของฉัน จากนั้นฉันสามารถควบคุมลากมุมมองของเจ้าของไฟล์ไปยังมุมมองใหม่ของ UIView และทุกอย่างทำงานได้ตามที่ควร


1

เพิ่งมีข้อผิดพลาดเดียวกันในโครงการของฉัน แต่เหตุผลที่แตกต่างกัน ในกรณีของฉันฉันมีการตั้งค่า IBOutlet ด้วยชื่อ "View" ในคลาส UITableViewController ที่กำหนดเองของฉัน ฉันรู้ว่า "มุมมอง" นั้นพิเศษเพราะเป็นสมาชิกของคลาสพื้นฐาน แต่ฉันไม่คิดว่าวิว (กรณีอื่น) จะเป็นปัญหาเช่นกัน ฉันเดาว่าบางพื้นที่ของ Cocoa นั้นไม่ได้ตรงตามตัวพิมพ์ใหญ่และอาจโหลด xib เป็นหนึ่งในพื้นที่เหล่านั้น ดังนั้นฉันเพิ่งเปลี่ยนชื่อเป็น DefaultView และตอนนี้ก็ดีแล้ว


1

เลือกเจ้าของไฟล์และข้ามไปเปิดตัวตรวจสอบตัวตนให้ชื่อชั้นที่มันสอดคล้องกับ หากวิธีการข้างต้นไม่สามารถใช้งานได้และคุณยังไม่เห็นช่องมองภาพให้เปิดช่องอ้างอิงใหม่เชื่อมต่อกับเจ้าของไฟล์จากนั้นคุณจะสามารถมองเห็นช่องรับภาพได้ คลิกที่มุมมอง Outlet เพื่อทำการเชื่อมต่อระหว่าง View Outlet และเจ้าของไฟล์ เรียกใช้แอปพลิเคชันซึ่งทำงานได้ดี


1

ในกรณีของฉันมุมมองไม่ได้ดูใน xib ใน xib มุมมองคือ size = none (แท็บขวามือที่ 4) ฉันตั้งค่าขนาดเป็นอิสระและโหลด xCode มุมมองถูกดึงดูดและฉันตั้งค่าลิงค์ที่เหมาะสมเพื่อดู


1

หากคุณลองทุกอย่างแล้วและยังคงพบข้อผิดพลาดนี้ให้ลองสร้างไฟล์คลาสใหม่ตั้งแต่ต้น แต่อย่าลืมเลือกช่องทำเครื่องหมาย "สร้างไฟล์ XIB" การทำเช่นนี้จะเชื่อมโยงรายการบางรายการที่ไม่ได้เชื่อมโยงโดยอัตโนมัติเมื่อสร้างไฟล์เหล่านี้แยกกัน หลังจากสิ่งนี้ถูกสร้างขึ้นคุณสามารถตัดและวางทุกอย่างลงบน XIB ใหม่และควรทำงานได้ดี

ฉันพบปัญหานี้โดยเฉพาะกับการสร้างไฟล์แยกต่างหากใน Swift


1

สำหรับฉันมันเกิดขึ้นเมื่อ

  • ฉันมีคลาส ViewController (.mm / h) ที่เชื่อมโยงกับไฟล์ Nib
  • UIViewจาก ViewController นี้จะต้องโหลดในมุมมองอื่นเป็นมุมมองย่อย

  • เราจะเรียกสิ่งนี้

    -(void)initCheckView{
    
       CheckView *pCheckViewCtrl = [CheckView instance];
    
       pCheckView = [pCheckViewCtrl view];
    
       [[self view]addSubview:pCheckView];
    
       [pCheckViewCtrl performCheck];        
    
    }

ที่ไหน

+(CheckView *)instance{
    static CheckView *pCheckView = nil;
    static dispatch_once_t checkToken;

    dispatch_once(&checkToken, ^{
        pCheckView = [[CheckView alloc]initWithNibName:@"CheckView" bundle:nil];
        if ( pCheckView){
            [pCheckView initLocal];
            **[pCheckView loadView];**
        }
    });

    return pCheckView;

}

ที่นี่ loadView หายไป ,, การเพิ่มบรรทัดนี้แก้ไขปัญหาของฉัน


1

ฉันมีปัญหาเดียวกันผมคิดออกและมันเป็นเพราะฉันได้ ticked " เซลล์แบบคงที่ " ในคุณสมบัติของตารางที่ดูภายใต้ตัวเลือกเนื้อหา ทำงานเมื่อเปลี่ยนเป็น " Dynamic Prototypes" ภาพหน้าจออยู่ด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่


1

ฉันมีปัญหาคล้ายกับ Xcode 9.3 และการตั้งค่า "โมดูล" ภายใต้ตัวตรวจสอบคุณลักษณะ "เจ้าของไฟล์" ของโมดูลโครงการแก้ไขปัญหานี้ให้ฉัน


1

เปิดไฟล์สตอรีบอร์ดของคุณที่มี viewController อยู่หรือไฟล์XIBที่เกี่ยวข้องกับtextEdit.appและตรวจสอบว่าสตอรีบอร์ดหรือชื่อ XIB นั้นเป็นชื่อเดียวกันกับ viewController ของคุณหรือไม่จากนั้นเปลี่ยนให้บันทึกและรีโหลด / รีสตาร์ท Xcode


1

หากคุณใช้วิธีการเริ่มต้นที่กำหนดเองตรวจสอบว่าคุณคืนสิ่งที่ถูกต้อง ฉันพบโค้ดบางส่วนที่มีปัญหาเช่นนี้:

- (id)init {
   self = [super init];
   if (self) {
      CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];
   } return self;
}

ในคลาสอื่นคอนโทรลเลอร์ถูกสร้างเช่น:

CustomController *controller = [[CustomController alloc] init];

ปัญหาคือว่าในวิธีการเริ่มต้นตัวเองไม่ได้เปลี่ยนและควรมีลักษณะเช่นนี้แทน:

- (id)init {
   self = [super init];
   if (self) {
      CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];
      [controller viewDidLoad];
      self = controller;
   } return self;
}

0

ฉันต้องการ Stephen J ที่สองบางครั้ง X Code อาจสับสน ฉันเพิ่งได้รับประสบการณ์ที่ฉันได้เล่นกับ UI เป็นอย่างมากและได้เพิ่มและลบร้านค้าหลายครั้ง ร้านค้าจะไม่เดินสายอีกต่อไป ฉันไม่เคยเข้าใจเหตุผลที่เฉพาะเจาะจง (ฉันได้ลองวิธีแก้ปัญหาทั้งหมดข้างต้น) และฉันต้องลบ NIB และสร้างใหม่จากศูนย์และในความเป็นจริงต้องใช้ชื่ออื่นสำหรับ NIB ก่อนที่มันจะทำงานได้ (XCode 4.6.1) เสียเวลาสองสามชั่วโมง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.