เอกสาร Main.storyboard ต้องการ Xcode 8.0 หรือใหม่กว่า


94

ฉันดาวน์โหลด Xcode beta และเปิดโครงการที่มีอยู่เพื่อดูว่ามันทำงานอย่างไรกับ Xcode 8 beta (ฉันเปิดไฟล์ Storyboard จาก Xcode 8)

ตอนนี้เมื่อฉันเปิดโปรเจ็กต์จาก Xcode 7.3 ฉันไม่สามารถเปิดไฟล์สตอรี่บอร์ดได้มันทำให้ฉันมีข้อผิดพลาดตามมา

เวอร์ชันนี้ไม่รองรับเอกสารที่บันทึกในรูปแบบ Xcode 8 เปิดเอกสารนี้ด้วย Xcode 8.0 หรือใหม่กว่า

ข้อผิดพลาด Xcode 7 ฉันควรทำอย่างไรเพื่อเปลี่ยนกลับเนื่องจากฉันต้องการทำงานกับ Xcode 7 ต่อไป

ใน Xcode 8 ฉันได้รับแจ้งให้เลือกอุปกรณ์และฉันเลือก iPhone 6S ฉันคิดว่าส่วนนั้นต้องรับผิดชอบต่อไฟล์สตอรี่บอร์ดที่ไม่เปิดใน Xcode 7


7
ยกเลิกการเปลี่ยนแปลงในการควบคุมเวอร์ชัน
Wain

1
@Wain ใช่นั่นเป็นทางเลือกเสมอ แต่ฉันมีการเปลี่ยนแปลงบางอย่างที่ไม่ถูกต้องและต้องการทราบวิธีแก้ปัญหาด้วย (ถ้าไม่เสียเวลา)
ภูมิจิตเมธา

คำตอบ:


212

ฉันคิดออกแล้ว:

เปิด Storyboard ของคุณใน Xcode 8

คลิกที่ File Inspector

ในส่วนเอกสารตัวสร้างอินเทอร์เฟซให้เลือกเปิดใน "Xcode 7.x" แทน "Xcode ล่าสุด (8.0)" ดังภาพหน้าจอต่อไปนี้:

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

ในการดำเนินการนี้คุณจะได้รับการแจ้งเตือนว่า "การบันทึกสำหรับ Xcode 7.x จะปิดเอกสารของคุณและข้อมูลสำหรับคุณลักษณะ Xcode 8.0 จะถูกลบออก"

คลิกบันทึกและปิดและคุณจะสามารถเปิดสตอรี่บอร์ดใน Xode 7.x


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

@ Bumit Mehta มันใช้ไม่ได้เมื่อฉันมีสตอรี่บอร์ด 2 แบบสำหรับ ipad และ iphone การเปลี่ยนแปลงจะถูกบันทึกไว้สำหรับหนึ่งในนั้นเท่านั้น กรุณาบอกฉันวิธีแก้ปัญหาใด ๆ
ดาวอังคาร

@mars: คุณเพียงแค่ต้องทำซ้ำขั้นตอนเดียวกันสำหรับสตอรีบอร์ดทั้งสองฉันได้ลองทำในโครงการทดสอบแล้วมันก็ใช้ได้
ภูมิจิตเมธา

2
เอกสาร Interface Builder อยู่ที่ไหน
natecraft1

10
แต่ถ้าคุณจะเปิดโปรเจ็กต์ใน xCode 8 อีกครั้งและเข้าสู่สตอรีบอร์ดคุณจะมีไฟล์สตอรี่บอร์ดยุ่งอีกครั้งและคุณจะต้องเปลี่ยนกลับไปใช้ 7.x อีกครั้ง - และ "บันทึกและกำหนด" อีกครั้ง
Massmaker

67

ฉันมีวิธีแก้ไข:

  1. เปิดสตอรีบอร์ดเป็น "ซอร์สโค้ด" (คลิกขวาที่สตอรีบอร์ด -> เปิดเป็น -> ซอร์สโค้ด)
  2. ลบแถวนี้:

<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  1. ลบสิ่งนี้สำหรับสตอรีบอร์ดทั้งหมดที่คุณใช้อยู่
  2. เรียกใช้แอป

13
หลังจากทำตามขั้นตอนข้างต้นเสร็จแล้วเมื่อเปิดสตอรี่บอร์ดเนื่องจากตัวสร้างส่วนต่อประสาน Xcode พัง !!!
Elangovan

3
สิ่งนี้อาจใช้ได้ใน XCode 8 Beta แต่ในรุ่น XCode 8 การทำเช่นนี้จะทำให้ XCode ผิดพลาด
GeneCode

ตอนนี้ใช้งานไม่ได้ยังมีข้อผิดพลาดและตั้งค่าอัตโนมัติเป็น 8.0 เมื่อเปิดสตอรีบอร์ด
Arfan Mirza

คำตอบที่ยอมรับฟังดูปลอดภัยกว่าการลบบรรทัดเพียงอย่างเดียว
kiedysktos

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

27

มันทำงานสำหรับฉัน

คลิกขวาที่ main.stoaryboard ไปเพื่อเปิดเป็น -> ซอร์สโค้ดและเปลี่ยนการอ้างอิง

เปลี่ยนแปลง

 <capability name="documents saved in the Xcode 8 format"
     minToolsVersion="8.0"/>  to

   <capability name="documents saved in the Xcode 7 format"
     minToolsVersion="7.0"/>

ทำตามขั้นตอนเดียวกันบน launchscreen.stoaryboard


2
นี่เป็นทางออกที่ดีที่สุดในกรณีที่คุณไม่มี Xcode 8.0
Kampai

2
ขอบคุณสำหรับการแก้ปัญหา ปัญหาเดียวกันเกิดขึ้นหลังจากเปลี่ยนจาก Xcode 9 เป็น Xcode 8 ฉันเปลี่ยน "<ความสามารถ name =" คำแนะนำเค้าโครงพื้นที่ปลอดภัย "minToolsVersion =" 9.0 "/>" เป็น <ความสามารถ name = "คำแนะนำเค้าโครงพื้นที่ปลอดภัย" minToolsVersion = "8.0" / >. หลังจากการเปลี่ยนแปลงนี้เมื่อคุณจะเปิดสตอรีบอร์ดในตัวสร้างอินเทอร์เฟซบรรทัดนี้จะถูกลบออก
Amit

10

ปัญหาเดียวกันนี้เกิดขึ้นหลังจากเปลี่ยนจาก Xcode 9 เป็น Xcode 8 ฉันเปิดสตอรี่บอร์ดในซอร์สโค้ดและเปลี่ยน

"<capability name="Safe area layout guides" minToolsVersion="9.0"/>" 
to <capability name="Safe area layout guides" minToolsVersion="8.0"/>

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


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

7

เจอคำถามนี้เหมือนกัน ฉันทำตามวิธีนี้เพื่อเปลี่ยน: เนื่องจากฉันไม่สามารถคลิกเมนูเพื่อเลือก 7.0 หรือใหม่กว่าฉันจึงเปิดmain.storyboardและlaunchscreen.storyboardด้วยซอร์สโค้ดกว่าที่ฉันเปลี่ยนเวอร์ชันด้วยตนเองและวิธีนี้ช่วยแก้ปัญหาได้


5
นี่คือบรรทัดก่อนการเปลี่ยนแปลง: <ความสามารถ name = "เอกสารที่บันทึกในรูปแบบ Xcode 8" minToolsVersion = "8.0" /> หลังจากการเปลี่ยนแปลง: เอกสาร <ความสามารถ = "ที่บันทึกในรูปแบบ Xcode 7" minToolsVersion = "7.0" />
Dani.Rangelov

เวอร์ชันเผยแพร่ XCode 8.0 (ไม่ใช่เบต้า) แสดง minToolsVersion = "6.0"
GeneCode

4

เนื่องจาก XCode 8 ยังคงแปลงไฟล์สตอรี่บอร์ดเป็นรูปแบบ XCode 8 ทุกครั้งที่ฉันเปิด (เป็นโครงการเก่าและทุกอย่างยุ่งเหยิง) ฉันจึงดาวน์โหลด XCode 7 และใช้เพื่อแก้ไขไฟล์สตอรีบอร์ด (และปิดก่อนฉัน เปลี่ยนกลับเป็น XCode 8) ถ้าฉันเปิดไฟล์ storyboard ใน 8 โดยไม่ได้ตั้งใจฉันเพิ่งรีเซ็ตไฟล์นั้นเป็นคอมมิตสุดท้ายเนื่องจากโปรเจ็กต์อยู่ใน GIT

โง่ฉันรู้ แต่มันได้ผล


3
<dependencies>
    <deployment identifier="iOS"/>
    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
    <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>

แทนที่การอ้างอิงของคุณเป็นการอ้างอิงนี้


0

เปิดกระดานเรื่องราวSource Codeและค้นหาminToolsVersionคีย์ ตั้งค่านั้นเป็น 7.0 และเปิดสตอรีบอร์ดนั้นใน Xcode 7.x


0

ในฐานะที่ @Bhumit_Metha ให้การแก้ปัญหาอย่างตรงไปตรงมา น่าเสียดายที่ในกรณีของฉันฉันไม่มี MAC ที่มีเวอร์ชัน Xcode ล่าสุด (8.0+) ทำการเปลี่ยนแปลงเหล่านั้นเพื่อรองรับไฟล์ 'xib' ใหม่ใน xcode เก่าของฉัน (7.x)

ดังนั้นฉันจึงได้วิธีแก้ปัญหาที่ใช้งานได้โดยมีขั้นตอนง่ายๆดังนี้:

[1] สร้างไฟล์ xib เปล่าใน xcode 7.x.

[2] คลิกขวาที่ xib ว่างเพื่อดูแหล่งที่มาและคัดลอกทั้งหมดนั้น

[3] ตอนนี้เปิด xib ใหม่ (อันที่มีข้อผิดพลาดของเวอร์ชัน) ในโปรแกรมดูซอร์ส วางรหัสก่อนหน้าไว้ด้านบน

[4] แทนที่บรรทัดเก่าทั้งหมดด้วยแท็กภายในใหม่: <objects> ...... </objects>

และนั่นคือทั้งหมด จะทำงานร่วมกับ xcode 7.x!

เคล็ดลับ: ในขณะที่เปิดครั้งต่อไปใน xcode ใหม่อย่าลืมเลือกโหมดความเข้ากันได้

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