2010-10-10 22 views
11

MyViewController में एक UIButton और एक अन्य MainViewController MyViewController का उपयोग करें।UIButton शीर्षक कैसे बदलें?

लेकिन मेनव्यू कंट्रोलर MyViewController में UIButton शीर्षक नहीं बदल सकता है।

भी, MyViewController में केवल UIButton शीर्षक कोडिडलोड विधि में बदलें।

क्या गलत है?

MyViewController

@interface MyViewcontroller : UIViewController { 
    IBOutlet UIButton *imageButton; 
} 

@property (nonatomic, retain) UIButton *imageButton; 

@implementation MyViewcontroller : UIViewController { 
@synthesize imageButton; 
    - (void)viewDidLoad { // can change button title 
     [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal] 
    } 

    - (void)setButtonTitle { // can't change button title 
     [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal]; 
    } 
} 

MainViewController

@implementation MainViewController : UIViewController { 
@synthesize scrollView; 
    - (void)viewDidLoad { // can't change button title 
     MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil]; 
     [myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal]; 
     [scrollView addSubview:myView.view]; 
     [myView release], myView = nil; 
    } 
} 

उत्तर

37

यह इसलिए होता है क्योंकि दुकानों तक करने के बाद दृश्य भरी हुई है वायर्ड नहीं मिलता, और दृश्य लोड नहीं होता है जब तक के बाद यह कहा जाता हो जाता है पहली बार (यह आलसी लोडिंग है)। आप यह सुनिश्चित करके बस इसे आसानी से ठीक कर सकते हैं कि आप हमेशा पहले दृश्य लोड करते हैं। हालांकि, हो सकता है कि आप अपने डिज़ाइन पर पुनर्विचार करना चाहें और बटन शीर्षक को किसी अन्य आइटम पर निर्भर कर सकें जो दृश्य पदानुक्रम का हिस्सा नहीं है।

उदाहरण के लिए, यदि आप फिर से आदेश अपने कॉल, यह काम करेगा:

MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil]; 
[scrollView addSubview:myView.view]; // view is loaded 
[myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal]; // imageButton is now wired 
+0

धन्यवाद। मैं आलसी लोडिंग सीखूंगा – seapy

+0

मुझे उस बिट को याद आया - ऐसा लगता है कि मेरे पास +1 – BoltClock

+0

सीखने के लिए बहुत कुछ है, मैं अपने बटन पर टेक्स्ट सेट करने में परेशानी में भाग गया क्योंकि मैं 'setBackgroundImage' के बजाय 'setImage' का उपयोग कर रहा था। यदि आप 'setImage' का उपयोग करते हैं तो यह आपके टेक्स्ट को कवर करेगा। – zekel

संबंधित मुद्दे