ไม่สามารถโหลด NIB ในบันเดิล


111

ฉันพยายามรวม Janrain Engage เป็นโมดูลที่กำหนดเองกับ Appcelerator Titanium ฉันได้สร้างโมดูลตัวอย่างและลากโฟลเดอร์ JREngage ไปยังโมดูลตัวอย่าง xcodeproj ตามที่ระบุในเอกสารของ Jainrain

ตอนนี้ฉันให้คำสั่ง build กับโปรเจ็กต์นี้จากนั้นดำเนินการ./build.pyและในที่สุดฉันก็รันtitanium runคำสั่ง เปิดตัวแอปพลิเคชันในโปรแกรมจำลองด้วยหน้าจอว่างเปล่าและเกิดข้อผิดพลาดทันที

การยุติแอปเนื่องจากข้อยกเว้นที่ไม่ถูกจับ 'NSInternalInconsistencyException' เหตุผล: 'ไม่สามารถโหลด NIB ในชุดรวม:' NSBundle </ Users / abhilash / Library / Application Support / iPhone Simulator / 4.2 / Applications / CA167346-4091-4E16-B841-955D1D391713 / test.app> (โหลด) 'ด้วยชื่อ' JRProvidersController ''

เหตุใดจึงเกิดข้อผิดพลาดนี้ขึ้น

คำตอบ:


213

ไปที่คุณสมบัติของไฟล์. xib ในตัวตรวจสอบไฟล์, คุณสมบัติ "Target Membership" ในช่องเลือกจากนั้นไฟล์ xib ของคุณเชื่อมโยงกับเป้าหมายของคุณ


2
นอกจากนี้หากคุณใช้การจัดสรร init แทนที่จะเป็น initWithNibName: bunle: สิ่งที่คุณจะได้รับคือหน้าจอสีดำ
Robert Childan

สงสัยว่าทำไมไฟล์ .xib ที่ไม่ได้ใช้อย่างแน่นอนจะต้องแขวนในโฟลเดอร์แฟ้มโครงการ ...
เบน

ฉันเดาว่าฉันไม่ได้เลือกช่องทำเครื่องหมายนี้โดยไม่ได้ตั้งใจแทนที่จะเป็นระบบจ่ายอัตโนมัติ แก้ไขข้อขัดข้องให้ฉันขอบคุณ
Yunus Nedim Mehel

ช่องทำเครื่องหมายสมาชิกเป้าหมายทั้งหมดเป็นสีเทาสำหรับฉัน ... อะไรคือสาเหตุ?
Stas

64

ใน Targets -> Build Phases

ตรวจสอบให้แน่ใจว่าได้เพิ่ม. xib Copy Bundle Resourcesแล้วหากไม่มีให้เพิ่มไฟล์. xib


ทำงานให้ฉัน สิ่งนี้มักเกิดขึ้นเมื่อคุณคัดลอก / ทำซ้ำไฟล์ xib +1
VoidMain

22

พยายามค้นหาทั้งหมด

XXXController = [[XXXControlloer alloc] initWithNibName:@"XXXController" bundle:nil];

ในรหัสของคุณและตรวจสอบให้แน่ใจว่าXXXControllerสะกดถูกต้อง


เป็นเรื่องง่ายเนื่องจาก nibname ไม่ได้เขียนอัตโนมัติ
chings228

1
เขาหมายถึงชื่อชั้นก่อนการจัดสรรซึ่งเป็นแบบอัตโนมัติ: P
Gil Sand

uiview สามารถโหลดได้จากปลายปากกา แต่ไม่มีinitWithNibName:bundle:วิธีการ
Vyachaslav Gerchicov

เรากำลังพูดถึง viewcontroller
chings228

@ chings228 XXXControlloer และ XXXController ดูความแตกต่าง
Zaporozhchenko Oleksandr

15

ฉันมีปัญหาเดียวกัน (ข้อยกเว้น 'ไม่สามารถโหลด NIB ในบันเดิล: .. ') หลังจากอัปเกรด xcode ของฉันจาก 3.2 เป็น 4.02 ในขณะที่การปรับใช้แอพของฉันกับ Xcode 3.2 ทำงานได้ดีมันขัดข้องด้วย xcode 4 ซึ่งเพิ่มข้อยกเว้นที่กล่าวถึงข้างต้น - แต่เฉพาะเมื่อฉันพยายามปรับใช้กับ IOS Simulator (v.4.2) การกำหนดเป้าหมายอุปกรณ์ IOS (v.4.1) ดำเนินการกับ Xcode 4 ด้วย

ปรากฎว่า (หลังจากผ่านไปหลายชั่วโมงของการตะเกียกตะกายไปรอบ ๆ ) ว่าเหตุผลคือการตั้งค่าที่เกือบ "ซ่อน" ในไฟล์. xib:

เยี่ยมชมคุณสมบัติของไฟล์. xib ในตัวตรวจสอบไฟล์: คุณสมบัติ 'ตำแหน่ง' ถูกตั้งค่าเป็น 'สัมพันธ์กับกลุ่ม' สำหรับไฟล์. xib ทั้งหมด ฉันเปลี่ยนเป็น 'Relative to project' และ voila: ตอนนี้ไฟล์. xib ทั้งหมดถูกโหลดอย่างถูกต้องในโปรแกรมจำลอง IOS!

ฉันไม่รู้ว่าอะไรเป็นสาเหตุของพฤติกรรม Xcode4 แปลก ๆ นี้ แต่มันคุ้มค่าที่จะลอง?


สิ่งนี้แก้ไขข้อผิดพลาดที่ฉันกำลังเผชิญเมื่อรวบรวมปลั๊กอิน Quartz Composer ที่ล้าสมัยมาก
Peter Kazazes

12

ในกรณีของฉันมันแปลกมาก (ใช้สตอรีบอร์ด): ด้วยเหตุผลบางอย่างมันเปลี่ยนจาก "ชื่อฐานไฟล์สตอรี่บอร์ดหลัก" เป็น "ชื่อฐานไฟล์หัวปากกาหลัก" ใน plist

การเปลี่ยนกลับเป็น "ชื่อฐานของไฟล์สตอรี่บอร์ดหลัก" (UIMainStoryboardFile) ช่วยแก้ปัญหานี้ได้


1
สิ่งที่ดี. มีปัญหาเดียวกัน ขอบคุณ. สิ่งนี้แก้ไขได้
Rameez Hussain

1
นี่ช่วยแก้ปัญหาของฉันได้! ขอบคุณ. ฉันเพิ่งทำซ้ำโครงการของฉันและเปลี่ยนชื่อไฟล์ที่เกี่ยวข้องทั้งหมด ทุกอย่างทำงานได้ แต่สิ่งนี้ ตอนนี้ทุกอย่างทำงาน !!
BeccaP

11

ข้อผิดพลาดหมายความว่าไม่มีไฟล์. xib ที่มี"JRProvidersController"ชื่อ ตรวจสอบอีกครั้งว่าJRProvidersController.xibมีอยู่หรือไม่

คุณจะโหลด.xib fileด้วย

controller = [[JRProvidersController alloc] initWithNibName:@"JRProvidersController" bundle:nil];

1
เฮ้หนุมานฉันตรวจสอบแล้วว่ามีไฟล์ JRProvidersController.xib แล้ว ฉันได้พยายามเปลี่ยนชื่อไฟล์และเรียกใช้งานแม้ว่ามันจะมีข้อยกเว้นเดียวกันก็ตาม
Goje87

ลองเปลี่ยนการเรียกใช้เป็น initWithNibName: NSStringFromClass ([คลาส MyViewController]) ตรวจสอบชื่อไฟล์อย่างใกล้ชิดเนื่องจากเป็นกรณีที่คำนึงถึงตัวพิมพ์เล็กและใหญ่
หนุมาน


ฉันได้ทำการเปลี่ยนแปลงที่คุณแนะนำแล้ว แต่ไม่ประสบความสำเร็จ
Goje87

7

การใช้มุมมอง Swift ที่กำหนดเองในตัวควบคุมมุมมอง Objective-C (ใช่แม้ว่าหลังจากนำเข้า<<PROJECT NAME>>-Swift.hไฟล์แล้ว) ฉันพยายามโหลดปลายปากกาโดยใช้:

MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([MyCustomView class]) owner:self options:nil] objectAtIndex:0];

... แต่NSStringFromClass([MyCustomView class])ส่งคืน<<PROJECT NAME>>.MyCustomViewและโหลดล้มเหลว TL; DR ทั้งหมดทำงานได้ดีในการโหลดปลายปากกาโดยใช้สตริงลิเทอรัล:

MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0];

6

ด้วยเป้าหมายการสร้างเป็นหนึ่งในอุปกรณ์ iOS ของฉันฉันจึงคลิกขวาที่ไฟล์ผลิตภัณฑ์ (xyzw.app) และเลือกรายการป๊อปอัปแสดงใน Finder เปิดหน้าต่างที่มี xyzw.app อยู่ข้างใน ฉันเปิดบันเดิลโดยใช้ Show Package Contents และเห็นไฟล์ทั้งหมดที่ฉันคาดหวังยกเว้นไฟล์เดียวไฟล์ที่บ่นด้วยตัวพิมพ์ใหญ่ฉันแทนที่จะเป็น i ตัวพิมพ์เล็กในชื่อ (zoomieVIew.nib แทน zoomieView.nib ). ฉันสังเกตเห็นตัวพิมพ์ใหญ่ I ในชื่อไฟล์ของ xib และเปลี่ยนและสร้างใหม่ เห็นได้ชัดว่า Xcode ทิ้งชื่อ. nib ที่สร้างขึ้นตามที่มันเป็น ฉันลบ zoomieVIew.nib ในบันเดิลสร้างใหม่และ Xcode สร้างไฟล์ใหม่เป็น zoomieView.nib แอปเริ่มทำงานบนอุปกรณ์


สิ่งเดียวกับที่ไมเคิลกำลังอธิบาย ฉันได้สร้างไฟล์ xib ที่มี UITableViewCell ที่กำหนดเอง เมื่อฉันเปิด. app และค้นหา myCell.xib ฉันเห็นว่าเป็น myCell.nib จริงๆ ยิ่งไปกว่านั้นแอพขัดข้องบนอุปกรณ์เท่านั้นและโหลดไฟล์ xib ได้เมื่อรันบนโปรแกรมจำลอง การรีเซ็ตเป็นเรื่องยุ่งยากเล็กน้อย สำหรับฉันอย่างน้อย เฉพาะเมื่อฉันลบไฟล์ทำความสะอาดเป้าหมายและคัดลอกไฟล์กลับ - ได้ผล
Nir Pengas

ทำเครื่องหมายไว้เนื่องจากยังแสดงวิธีง่ายๆในการค้นหาและดูเนื้อหาของแพ็คเกจ
fotisgpap

doh. ฉันจะทำให้ตัวเองกลับมามีชีวิตอีกครั้งได้อย่างไร ขอบคุณคนใจดี :) ฉันเป็นจุดเริ่มต้นของการค้นคว้าปัญหานี้
heximal

6

ฉันมีปัญหากับสตอรีบอร์ดและปลายปากกาถูกเรียกว่า 'bKD-J3-fhr-view-ZSR-8m-2da'

เป็นเพราะฉันพยายามเพิ่มมุมมองย่อยให้กับ self.view ใน init (withCoder) ของตัวควบคุมมุมมอง Self.view ยังไม่มี

ย้ายไปที่ viewDidLoad และดีกว่าทั้งหมด!


ในทำนองเดียวกันฉันได้รับข้อผิดพลาดเช่นนี้เมื่อฉัน (โง่เขลา) พยายามกำหนดผู้รับมอบสิทธิ์มุมมองตารางและแหล่งข้อมูลใน init () แทนที่จะเป็น viewDidLoad ()
jpb

5

ดูโครงการ

Target -> Buid Phases -> Copy Bundle Resources

คุณจะพบ xib / storyborad ของคุณด้วยสีแดง

เพียงแค่ลบมันลบการอ้างอิงทั้งหมดของไฟล์ที่หายไปจากโครงการ

ตอนนี้ลากไฟล์ storyboard / xib ไปที่ไฟล์นี้อีกครั้งCopy Bundle Resourcesมันจะยังคงแสดงไฟล์ด้วยสีแดง แต่ไม่ต้องกังวลไป

เพียงแค่ทำความสะอาดและสร้างโครงการ

ตอนนี้คุณจะทำให้โครงการของคุณทำงานได้สำเร็จอีกครั้ง !!


1
สิ่งนี้ช่วยแก้ปัญหาของฉันได้เนื่องจากฉันมีสตอรีบอร์ดสองรายการ "MyStoryboard.storyboard" และ "MyStoryboard ~ ipad.storyboad" ... ดังนั้นจากเป้าหมาย iPad ฉันจึงลบ "MyStoryboard.storyboard" ออกจาก "Copy Bundle Resources"
i89

5

สำหรับ Storyboard

ฉันลองใช้วิธีแก้ปัญหาทั้งหมดที่โพสต์ไว้ที่นี่ แต่ไม่มีอะไรได้ผลสำหรับฉันเพราะฉันใช้ Storyboard กับ Swift 5

เพิ่งเริ่มสร้างคอนโทรลเลอร์และมุมมองใหม่ในแอปทดสอบสตอรี่บอร์ดสิ่งที่ฉันพบคือฉันไม่มีรหัสสตอรี่บอร์ดของ My View Controller

นี่คือทางออกของฉันหากคุณต้องการไปจาก ViewController A -> View Controller B

ขั้นตอนที่ 1.ในสตอรีบอร์ด: ตรวจสอบให้แน่ใจว่า ViewControllerA ของคุณฝังอยู่ในตัวควบคุมการนำทาง

ขั้นตอนที่ 2.ในสตอรีบอร์ด: ตรวจสอบว่าคุณได้กล่าวถึง Storyboard ID สำหรับ ViewControllerB ของคุณหรือไม่ซึ่งคุณจะใช้ในโค้ดเป็นตัวระบุ

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

ขั้นตอนที่ 3และสุดท้ายตรวจสอบให้แน่ใจว่าคุณกดคอนโทรลเลอร์ด้วยวิธีนี้ใน ViewControllerA ของคุณด้วยการคลิกปุ่ม

if let viewControllerB = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewControllerB") as? ViewControllerB {

            if let navigator = navigationController {
                navigator.pushViewController(viewControllerB, animated: true)
            }
        }

4

อย่าใส่. xib เมื่อคุณใส่ชื่อ XIB! มันบอกเป็นนัยว่า!

อย่าทำสิ่งนี้:

 UIView *viewFromNib = [[NSBundle mainBundle] loadNibNamed:@"ResultsAssessmentView.xib" owner:self options:nil][0];

ทำเช่นนี้:

 UIView *viewFromNib = [[NSBundle mainBundle] loadNibNamed:@"ResultsAssessmentView" owner:self options:nil][0];

4

ตัวอย่าง Swift4 หากMyCustomView.swiftและMyCustomView.xibในกรอบ วางสิ่งนี้ในการเริ่มต้นของMyCustomView :

let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "MyCustomView", bundle: bundle)
if let nibView = nib.instantiate(withOwner: self, options: nil).first as? UIView {
    self.aViewInMyCustomView = nibView
    self.aViewInMyCustomView.frame = self.frame
    self.addSubview(self.aViewInMyCustomView)
    // set constraints
    self.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: self.aViewInMyCustomView, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
} 

ในที่สุด! ฉันทำงานในโครงการโมดูลาร์ของ iOS และนี่คือสิ่งที่ฉันกำลังมองหา ขอบคุณ!
Firda Sahidi

aViewInMyCustomView คืออะไร?
famfamfam

@famfamfam: a UIView
norbDEV

tks ตอนนี้ฉันรู้วิธีใช้แล้ว
famfamfam

3

ฉันยังพบว่ามันล้มเหลวเมื่อพยายามโหลด XIB ด้วยชื่อ @ "MyFile.xib" เมื่อฉันใช้ @ "MyFile" มันใช้งานได้ - ดูเหมือนว่ามันจะเพิ่มส่วนขยายเสมอ แต่ข้อความแสดงข้อผิดพลาดบอกว่าไม่พบ MyFIle.xib ในชุดรวม - หากมีข้อความว่า MyFile.xib.xib นั่นจะเป็นเบาะแสใหญ่


เหตุผลที่คุณต้องไม่เพิ่มส่วนขยายคือในบันเดิลที่คอมไพล์แล้วไฟล์. xib จะถูกคอมไพล์เป็นไฟล์. nib ด้วย ดังนั้นจึงไม่มี MyFile.xib อยู่ในบันเดิลของคุณอย่าลืมส่วนขยายสองเท่า
Pieter Jongsma

3

ไฟล์ XIB ของคุณอาจอยู่นอกโฟลเดอร์โครงการของคุณ สิ่งนี้ทำให้ไม่ปรากฏตัวตรวจสอบเป้าหมาย อย่างไรก็ตามการย้ายไฟล์ XIB ไปยังโฟลเดอร์โครงการของคุณควรแก้ไขได้


2

การทำงานกับ Xcode 4.6.3 และการแปลไฟล์ NIB ของฉันฉันก็พบปัญหานี้เช่นกัน

สำหรับฉันไม่มีอะไรช่วยได้นอกจากการเปลี่ยน "Document Versioning" ใน File Inspector เป็น Deployment 5.0 แทนที่จะเป็น 6.1


2

มันเกิดขึ้นเมื่อคุณเปลี่ยนชื่อไฟล์ nib หากคุณมีแล้วให้สร้างหัวปากกาใหม่ (หมายถึงคัดลอกเนื้อหาไฟล์หัวปากกาปัจจุบันไปยังหัวปากกาใหม่) ลบไฟล์หัวปากกาเก่าและจะแก้ปัญหาของคุณได้

แก้ไข: ด้วย Xcode ใหม่ที่เริ่มต้นเวอร์ชัน 4.6.3 หากคุณเปลี่ยนชื่อ (พร้อมคุณสมบัติ refactor) คลาสคอนโทรลเลอร์จะเปลี่ยนชื่อไฟล์ nib ด้วยและคุณไม่ต้องกังวลกับปัญหาการโหลดหัวปากกา


2

ฉันเพิ่งมีประสบการณ์ที่น่าสนใจโดยใช้ Xcode 6.3

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

ในที่สุดตามคำตอบของ Brian Michael Bentley ในที่สุดฉันก็ตัดสินใจตรวจสอบไฟล์. app ในโฟลเดอร์โปรแกรมจำลองของฉันบน HD ของฉัน ฉันพบว่าหัวปากกาทั้งหมดของฉันอยู่ที่นั่น แต่มี abc ~ ipad.nib แทนที่จะเป็น abc.nib ที่คาดไว้ ฉันเปลี่ยนชื่อไฟล์เหล่านี้ด้วยตนเองเพื่อลบส่วน ~ ipad สร้างและใช้งานได้!

พยายามดูว่าเหตุใดสิ่งเหล่านี้จึงถูกต่อท้ายด้วยคีย์เวิร์ด ~ ipad ฉันดูที่การตั้งค่าโปรเจ็กต์ของฉันและอันที่จริงในแท็บทั่วไป> ข้อมูลการปรับใช้ฉันเลือกเฉพาะ iPad ฉันพยายามรันบนเครื่องจำลอง iPhone ฉันเชื่อว่าในอดีต Xcode จะให้ข้อผิดพลาดที่ระบุว่าไบนารีไม่รองรับ iPhone และคุณจะไม่ประสบความสำเร็จในการเรียกใช้แอป

ฉันลบแอพออกจากโปรแกรมจำลองและทำสิ่งเดิมอีกครั้ง - อีกครั้งโดยรองรับเฉพาะ iPad เท่านั้น คราวนี้. app มี abc ~ iphone.nib และ abc ~ ipad.nib สำหรับสตอรี่บอร์ดที่คาดหวังแต่ละอันและมันก็ทำงานบนเครื่องจำลอง iPhone ได้ดี อีกครั้ง - หากเราเลือก iPad ในการตั้งค่าข้อมูลการปรับใช้เท่านั้นไม่ควรทำงานบน iPhone Simulator นี่คือบั๊ก Xcode

ดังนั้นจึงมีพฤติกรรมบางอย่างที่ไม่สอดคล้องกันที่นี่ในส่วนของ Xcode และน่าเสียดายที่มันเป็นข้อผิดพลาดที่ไม่ต่อเนื่องและอาจเป็นเรื่องยากที่จะทำซ้ำ แต่ฉันใส่ไว้ที่นี่เพื่อที่จะได้ช่วยเหลือผู้อื่นในอนาคต


2

หากปัญหาเดียวกันนี้ไม่ได้ผลฉันจึงคิดว่ามีบางอย่างแปลก ๆ กับข้อมูลที่ได้รับ

ใน xcode 6.3.2 ฉันต้อง:

ในเมนู XCode -> การตั้งค่า -> แท็บสถานที่ -> ในสถานที่เปลี่ยนข้อมูลที่ได้รับมาเป็นแบบสัมพัทธ์แล้วสลับกลับเป็นค่าเริ่มต้น

จากนั้นปลายปากกาก็โหลดได้ดี


ฉันเพิ่งลบโฟลเดอร์ Derived Data และใช้งานได้ ดูเหมือนจะสับสนเพราะฉันเปลี่ยนชื่อไฟล์ xib ในการนำทางโครงการ แปลก
Kyle Goslan

2

ระวัง: Xcode เป็นตัวพิมพ์เล็กและใหญ่กับชื่อไฟล์ มันไม่เหมือนกัน "สนุก" มากกว่า "สนุก"


ชื่อไฟล์สำหรับ nib ของฉันคือ FormItemCheckBoxCell.nib คลาสคือ FormItemCheckboxCell การใช้คำว่า "Box" เป็นตัวพิมพ์ใหญ่ทำให้เสียเวลาไป 45 นาทีในชีวิตของฉัน
SafeFastExpressive

1

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

NSBundle *bundle = [NSBundle bundleWithIdentifier:@"<your bundle id here>"];
ABCViewController *vc = [[ABCViewController alloc] initWithNibName:@"<your nib name>" bundle:bundle];

1

สำหรับฉันมันแก้ไขได้เพียงแค่เปลี่ยนชื่อไฟล์ในเซลล์ของฉันให้เหมือนกับคลาสของมัน

ใน Attributes Inspector (แท็บที่สามบนแถบด้านขวาในกระดานเรื่องราว):

  1. ตั้งค่าตัวระบุของเซลล์ (ตัวอย่างเช่น "MyCellId")
  2. ตั้งค่าคลาสของเซลล์ (ตัวอย่างเช่น "MyCellClass" เมื่อไฟล์เป็น "MyCellClass")
  3. ลงทะเบียนเซลล์ในตัวควบคุมมุมมองของคุณดังต่อไปนี้:

    tableView.register (UINib (nibName: "MyCellClass" บันเดิล: nil) forCellReuseIdentifier: "MyCellId")


0

พบปัญหานี้ในขณะที่เปลี่ยนรหัสเก่าของฉันจาก XCode 3x เป็น XCode 4 และแก้ไขได้โดยเพียงแค่เปลี่ยนชื่อ wwwwwwww.xib เป็น RootViewController.xib


0

ฉันพบปัญหาเดียวกัน ในกรณีของฉันชื่อ nib คือ "MyViewController.xib" และฉันเปลี่ยนชื่อเป็น "MyView.xib" สิ่งนี้กำจัดข้อผิดพลาด

ฉันยังย้ายโครงการจาก XCode 3 เป็น 4.2 การเปลี่ยนประเภทเส้นทางไม่สำคัญ


0

นอกจากนี้สาเหตุอาจเกิดจากการค้นหาไฟล์ในโฟลเดอร์เฉพาะภาษาที่ไม่ถูกต้องเมื่อคุณยุ่งกับการแปล


0

ทุกครั้งที่เปลี่ยนชื่อตัวควบคุมมุมมองที่อยู่ในแอพของฉัน Delegate ฉันเสียเวลากับเรื่องนี้ การปรับโครงสร้างใหม่ไม่ได้เปลี่ยนชื่อหัวปากกาใน initWithNibName: @ "MYOldViewControllerName"


0

ฉันมีปัญหาเดียวกันการเปลี่ยนชื่อตัวระบุตัวควบคุมมุมมองในสตอรีบอร์ดได้ผลสำหรับฉัน


0

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


0
SecondViewController *secondViewController = [[SecondViewController alloc]initWithNibName:@"SecondView.xib" bundle:nil];
    [self.navigationController pushViewController:secondViewController animated:YES];

ในโค้ดด้านบนหากคุณให้นามสกุลไฟล์เช่น "SecondView.xib" ด้วยแสดงว่าผิดและจะแสดงข้อผิดพลาดข้างต้น ใช้ "SecondView" แทน ฉันได้ทำผิดพลาดนั้น


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