คำเตือน“ ไม่รองรับรูปแบบธรรมดาในรายการการนำทาง” ด้วยรายการปุ่มแถบที่กำหนดเองของฉัน


89

ฉันลากปุ่ม Round Rect ไปที่ตำแหน่งของรายการปุ่มแถบด้านขวาและตั้งค่ารูปภาพเป็นปุ่ม Round Rect ทั้งหมดทำงานได้ดียกเว้นคำเตือน "ไม่รองรับรูปแบบธรรมดาในรายการการนำทาง" แม้ว่าฉันจะเลือกรูปแบบของ Bar Button Item เป็น "Bordered" คำเตือนก็ยังคงอยู่ที่นั่น Xcode 4.2 มีอะไรบ้าง? ขอบคุณล่วงหน้า!

Ps. ฉันปรับแต่งรายการปุ่มบาร์หลายรายการด้วยปุ่ม Round Rect บางครั้ง Xcode 4.2 แสดงคำเตือนเพียงรายการเดียวในรายการปุ่มบาร์บางครั้งแสดงคำเตือนในรายการปุ่มบาร์ทั้งหมด


1
ฉันเขียนบล็อกโพสต์เกี่ยวกับเรื่องนี้blog.mosheberman.com/…
Moshe

อย่าเพิ่มปุ่มเพิ่มรายการปุ่มแถบ นี่เป็นความผิดพลาดของฉัน
Daniel Springer

คำตอบ:


136

ฉันสามารถลบข้อผิดพลาดเหล่านี้ได้โดยการแก้ไขไฟล์สตอรีบอร์ดด้วยตนเองและค้นหารายการ style = "plain" ที่ไม่เหมาะสมในรายการ Bar Button ใน<navigationItem>องค์ประกอบ

เปลี่ยนจาก:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">

ถึง:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">

นี่เคลียร์คำเตือน ... ถูกหรือผิด

นี่อาจเป็นการแฮ็กที่น่าทึ่งและสิ่งที่น่ากังวลกว่าคือฉันไม่ได้รูทสาเหตุหรือลบรายการปุ่มแถบที่มองไม่เห็นออกจากเอกสารโดยรวม สิ่งนี้เกิดขึ้นหลังจากผ่านองค์ประกอบทั้งหมดทีละรายการและพบว่าแถบการนำทางบางส่วนว่างเปล่า (ไม่มีลูก) และอาจเกิดขึ้นกับการสืบทอดการคัดลอกและวาง (cmd + c | v) จำนวนมากและไม่ใช้ซ้ำ (cmd + d) เพื่อสร้างอินเทอร์เฟซ แม้ว่าสาเหตุต้นทางไม่ได้เกิดจากราก แต่อาการก็คือรายการแถบไม่แสดงในเอกสาร "มุมมองเค้าร่าง" ที่จะแก้ไข พฤติกรรมของตัวสร้างอินเทอร์เฟซทำให้ฉันมีความเหมาะสมในบางครั้งและคอนเทนเนอร์ว่างเปล่าที่ควรมีบางอย่างในมุมมองเค้าร่างเป็นกลิ่น สำหรับฉันแล้วตอนนี้ บางครั้งการลบโหนดที่ละเมิดและสร้างใหม่จะช่วยแก้ปัญหาที่แปลกที่สุดได้

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

แก้ไข: ใส่วงเล็บในบล็อกโค้ด


24
เลือก barbuttonitem ในตัวสร้างอินเทอร์เฟซแผงแอตทริบิวต์ที่เปิดอยู่ทางด้านขวาและการเปลี่ยนรูปแบบรายการปุ่มแถบเป็น "Bordered" จะใช้ความแตกต่างเดียวกันกับไฟล์สตอรี่บอร์ด ดังนั้นจึงควรปลอดภัย
mash

ขอบคุณสำหรับคำแนะนำนั้น @mash วิธีที่ฉันทำนั้นได้รับความเจ็บปวดและความทุกข์ทรมานอย่างน่ากลัว
ฮันเตอร์ - Orionnoir

@ SpaceDog2 ขอบคุณสำหรับข้อมูลเพิ่มเติม ฉันยังไม่ได้อัปเกรดจึงไม่สามารถเพิ่มการยืนยันได้ ฉันจะระวังด้วยวิธีนี้จริงๆ ฉันรู้ว่ามันช่วยคนมากมายจนถึงตอนนี้ เราจะดูว่ามันหยุดให้ความช่วยเหลือหรือไม่
Hunter-Orionnoir

5
โซลูชันนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันใน Xcode 7.1 นอกจากนี้แทนที่จะแก้ไขซอร์สโค้ดโดยตรงคุณสามารถเปลี่ยนสิ่งนี้ได้ในสตอรีบอร์ดเอง (เปลี่ยนสไตล์จากธรรมดาเป็น Bordered) และมีผลลัพธ์เหมือนกับการลบstyle="plain"ออกจากซอร์สโค้ดสตอรีบอร์ดด้วยตนเอง ดังนั้นสำหรับฉันคำแนะนำนี้จากฮันเตอร์ดูเหมือนว่าถูกต้อง
Erik van der Neut

ลองดูคำตอบของ dstudeba ด้วยฉันไม่รู้ด้วยซ้ำว่าสิ่งที่เขาอธิบายนั้นเป็นไปได้ อาจช่วยให้ทุกคนเจ็บปวดและทรมานจากการแก้ไขไฟล์ด้วยมือ การควบคุมแหล่งที่มาคือเพื่อนของคุณปลอดภัยทุกคน ;)
Hunter-Orionnoir

32

ในกรณีที่คุณคลิกที่คำเตือนและคุณไม่ไปที่รายการการนำทางที่กระทำผิดให้ทำดังต่อไปนี้ (แสดงภาพคำตอบของ Hunter ด้วยวิธีการที่ปลอดภัยกว่าจากความคิดเห็นที่เพิ่มเข้ามา)

ในเบราว์เซอร์ไฟล์ให้คลิกขวาที่กระดานเรื่องราวแล้วเลือก Open As Source Code

ใส่คำอธิบายภาพที่นี่

ในหน้าซอร์สโค้ดให้ค้นหา "ธรรมดา" และค้นหารายการที่แนบมากับรายการการนำทาง

ใส่คำอธิบายภาพที่นี่

ที่จะได้รับชื่อของมุมมองที่ใส่ "ฉาก" ในแถบการค้นหาและคลิกลูกศรกลับค้นหาเพื่อค้นหาตัวอย่างแรกแท็กที่ดังกล่าวข้างต้นnavigationItem

ใส่คำอธิบายภาพที่นี่

นี่คือชื่อฉากของคุณตอนนี้คุณสามารถเปลี่ยนมุมมอง Storyboard ของคุณกลับไปเป็นได้Interface Builder - Storyboardด้วยวิธีการคลิกขวาที่อธิบายไว้ข้างต้นจากนั้นไปที่เลือกฉากในเมนูฉากและรายการบาร์ที่อยู่ข้างใน

ใส่คำอธิบายภาพที่นี่

ไปที่ตัวตรวจสอบคุณสมบัติและเปลี่ยนสไตล์จากPlainเป็นBordered

ใส่คำอธิบายภาพที่นี่


1
เย็น. ฉันจะลองครั้งต่อไปสิ่งนี้เกิดขึ้นแน่นอน
Hunter-Orionnoir

13

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


8

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

ตั้งค่ารูปแบบปุ่มแถบเป็นแบบธรรมดา


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

นี่คือคำตอบที่เหมาะสมที่สุด ฉันเปลี่ยนสไตล์เป็น Bordered
Andrej

6

backBarButtonItem leftBarButtonItemและrightBarButtonItemเป็นUINavigationItemวัตถุ ไม่มีstyleทรัพย์สินในUINavigationItemนี้จึงเป็นเหตุผลของคำเตือน คุณควรตั้งค่า barButtons ตามโปรแกรม:

iOS 4:  

UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect];
 [bt setFrame:YourFrame];
 //[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal];
 [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
 UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
 self.navigationItem.leftBarButtonItem=leftButton;

สำหรับ iOS 5+:

อ่านส่วน "การปรับแต่งลักษณะที่ปรากฏ" ของการอ้างอิง UIBarButtonItem


3
ฉันมีโปรเจ็กต์ที่สืบทอดมาพร้อมตัวควบคุมและปุ่มดูจำนวนมาก ดูเหมือนจะไม่สามารถเกลี้ยกล่อม XCode ให้บอกได้ว่าปุ่มใดทำให้เกิดคำเตือน คำแนะนำใด ๆ ? ขอบคุณ!
Olie

อาจเรียกใช้ตัวควบคุมมุมมองของคุณและ "ค้นหา" UIBarButtonItenStyle ซึ่งมักจะเป็นที่ที่ตั้งค่าคุณสมบัติไม่ถูกต้อง
TimWhiting

1

ในแถบการนำทางให้ลองใช้ UIBarButtonItem แทนปุ่ม Round rect และตั้งค่ารูปภาพ


แต่สไตล์ของ UIBarButtonItem ไม่ใช่สิ่งที่ฉันต้องการ
lu Yuan

1

ในกรณีของฉันมันเป็นภาพของลูกศรย้อนกลับซึ่งตั้งค่าเป็น "ธรรมดา"

ข้อความแสดงข้อผิดพลาดปรากฏขึ้นเพื่ออ้างถึงรายการทั้งหมดในแถบนำทาง


0

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

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