जोड़ना मुझे three20
के साथ कोई समस्या है, मुझे उम्मीद है कि कोई मेरी मदद करने में सक्षम होगा।एक TTTableViewController (तीन20 से) को अन्य UIViewController
मेरे पास TTTableViewController
है जो मैं ऐप three20
में नमूना परियोजनाओं का उपयोग करता हूं, इस तरह के समान ही उपयोग करता हूं। मेरे पास केवल तीन विधियां हैं जिन्हें मैं कार्यान्वित कर रहा हूं: (id)init
, (void)createModel
, और (id<UITableViewDelegate>)createDelegate
। और मैंने अपने डेटा के लिए TTListDataSource
और TTURLRequestModel
उपclassed है। संक्षेप में, यह TTTableViewController
का काफी सरल उपयोग है, मैं सामान्य से कुछ भी नहीं कर रहा हूं।
जब मैं UIView
के वंशज को जोड़ता हूं, तो यह ठीक काम करता है। यह पूरी तरह से डेटा लोड और प्रदर्शित करता है। उदाहरण के लिए, निम्न दो काम ठीक:
FooTableViewController *controller = [[FooTableViewController alloc] init];
controller.view.frame = CGRectMake(288, 20, 480, 1004);
[self.window addSubview:controller.view];
करता है के रूप में:
FooTableViewController *controller = [[FooTableViewController alloc] init];
controller.view.frame = CGRectMake(288, 20, 480, 1004);
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = CGRectMake(0, 0, 768, 1024);
// a bunch of scrollView variable initializations..
[scrollView addSubview:controller.view];
[self.window addSubview:scrollView];
समस्या पैदा होती है जब मैं view
को FooTableViewController
(जो, फिर से, TTTableViewController
का एक उपवर्ग है) को जोड़ने का प्रयास UIViewController
के वंशज के। उदाहरण के लिए, उदाहरण नहीं है:
FooTableViewController *controller = [[FooTableViewController alloc] init];
controller.view.frame = CGRectMake(288, 20, 480, 1004);
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.frame = CGRectMake(0, 20, 768, 1004);
[viewController.view addSubview:controller.view];
[self.window addSubview:viewController.view];
कोई विचार क्यों ऐसा होता है? जैसे मैंने कहा, यह ठीक काम करता है जब मैं इसे UIView
(यानी, जो UIViewController
में नहीं है) में जोड़ता है, लेकिन जब मैं इसे UIViewController
में जोड़ने का प्रयास नहीं करता हूं। जैसा कि मैंने ऊपर किया है, इसे जोड़ने की कोशिश करने के अलावा, मैंने UIViewController
को उपclassing और इसे भीतर से जोड़ने की भी कोशिश की। कोई भाग्य नहीं।
धन्यवाद!
संपादित करें मुझे "यह काम नहीं करता" के माध्यम से मेरा क्या मतलब है, इस बारे में थोड़ा और स्पष्ट होना चाहिए। मैं बस एक खाली टेबल देखता हूं - बस खाली पंक्तियां। createModel
पर ब्रेकपॉइंट डालने से वास्तव में पता चलता है कि उस विधि को नहीं कहा जा रहा है। धन्यवाद!
अद्यतन diwup पूरी तरह से मुझे सही समाधान की ओर इशारा किया। वह उसमें सही था क्योंकि TTTableViewController
का viewWillAppear:
और viewDidAppear:
कॉल नहीं किया जा रहा था। मैंने इसे UIViewController
(जिसे मैंने FooViewController
कहा) को 0xको view
में कक्षा के भीतर से जोड़कर सत्यापित किया (मैंने TTTableViewController
परिवर्तनीय controller
कहा)। मैं इस तरह के दो तरीकों को भी ओवरराइड करता हूं:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[controller viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[controller viewDidAppear:animated];
}
और, देखो और देखो, यह काम करता है! बेशक, यह एक दीर्घकालिक समाधान नहीं है, मैं अभी भी यह जानना चाहता हूं कि viewWillAppear:
और viewDidAppear:
कैसे स्वयं को बुलाया जाए।
UPDATE2 मैं सिर्फ इतना तरह viewDidLoad:
ओवरराइड करने का फैसला किया:
- (void)viewDidLoad {
[super viewDidLoad];
[super viewWillAppear:NO];
[super viewDidAppear:NO];
}
मैं इसके साथ बहुत खुश नहीं हूँ, यह hacky लगता है (और मैं शायद यकीन viewWillAppear:
और viewDidAppear:
बुलाया नहीं मिलता बनाना चाहिए दो बार), लेकिन मैं इसे एक दिन के साथ कॉल करने के लिए तैयार हूं।
समाधान काम करता है! यदि कोई बेहतर समाधान है तो यह बहुत अच्छा होगा .. प्रत्येक नियंत्रक को रखने और दृश्य को कॉल करने के लिए कई टीटी नियंत्रकों का उपयोग करते हुए विल्लएपियर बहुत परेशानी होती है। – samwize