เข้าถึงคุณสมบัติจากคลาสย่อย UIView

ฉันมีจอแสดงผลที่ค่อนข้างยุ่งเหยิงซึ่งฉันต้องการ textField, 9 UIlabels และ 9 UIButtons โดยมีเส้นเชื่อมต่อกันเป็นรูปต้นไม้คว่ำ ทุกอย่างถูกสร้างขึ้นด้วยรหัส

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

บนกระดานเรื่องราว ฉันเปลี่ยนคลาสของ self.view เป็นคลาสย่อยใหม่ที่ฉันสร้างขึ้น เมื่อฉันรันโปรแกรมจำลอง มันแสดงสิ่งที่ฉันต้องการได้อย่างถูกต้อง

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

ตอนนี้ฉันไม่รู้ว่าวิธีการของฉันผิดตรงหรือว่าฉันพลาดอะไรไป จะดีกว่าไหมถ้าสร้างคลาสย่อยของ UIViewController แล้วทำงานต่อจากที่นั่น

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก


person Marcal    schedule 21.04.2014    source แหล่งที่มา


คำตอบ (2)


แทนที่คุณสมบัติ view ในส่วนขยายอินเทอร์เฟซของคุณ:

#import "CustomView.h"

@interface ViewController ()

@property (nonatomic, strong) CustomView *view;

@end

@implementation ViewController

// Only needed if you're not using storyboards
-(void)loadView
{
    self.view = [CustomView new];

    // Setup the rest of your view, e.g.
    self.view.customLabel.text = @"Custom label text";
}

@end

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

person Rich    schedule 21.04.2014
comment
เยี่ยมเลย ฉันรู้ว่าฉันขาดอะไรบางอย่างไป มีวิธีง่ายๆ ในการแทนที่การทำงานของปุ่มหรือไม่? ตอนนี้ฉันกำลังกำหนดเป้าหมายของแต่ละปุ่มบน viewDidLoad อยากรู้ว่ามีวิธีที่ง่ายกว่านี้ไหม... - person Marcal; 21.04.2014
comment
@Marcal ใช่ในกระดานเรื่องราวให้ลาก Touch up ด้านในไปยังไฟล์ตัวควบคุมมุมมองของคุณ - person Rich; 21.04.2014
comment
@Marcal ดู สิ่งนี้ หวังว่านี่จะ อธิบาย - มันมีไว้สำหรับปลายปากกา ไม่ใช่สตอรี่บอร์ด แต่เป็นแนวคิดเดียวกัน :) - person Rich; 21.04.2014
comment
ใช่ขอบคุณ. ฉันรู้ทั้งหมดนี้ แต่ฉันกำลังทำ self.view subViews ทั้งหมดด้วยโค้ด ดังนั้นฉันจึงไม่สามารถลากอะไรไปบนกระดานเรื่องราวได้ ตอนนี้ทุกอย่างเรียบร้อยแล้ว ขอบคุณนะ! - person Marcal; 21.04.2014

คุณต้องส่งมันไปยังมุมมองของคุณเช่นนี้

MyViewClass *MyView=(MyViewClass*)self.view;


if ([self.view isKindOfClass:[MyViewClass class]]) {

    //do something like MyView.urProperty 

    // Don't forget to import the MyViewClass.h in the class        

}
person Vijay-Apple-Dev.blogspot.com    schedule 21.04.2014