से कनेक्ट नहीं होंगे। मैं अपने कस्टम प्रतिनिधि वर्ग में स्टोरीबोर्ड के भीतर डेटा आउटसोर्स और तालिका दृश्य के आउटलेट को आउटलेट करने में असमर्थ हूं। मैं उन तालिका कार्यों को किसी अन्य वर्ग में प्रतिनिधि देना चाहता हूं। स्टोरीबोर्ड में प्रतिनिधिमंडल, आउटलेट और तारों की चीजों के बारे में मैंने कुछ मूलभूत रूप से गलत समझा है।UITableView डेटासोर्स और प्रतिनिधि कस्टम क्लास
पृष्ठभूमि
मैं एक UIViewController
एक UIPickerView
युक्त दृश्य वाली और अन्य बातों के साथ एक UITableView
है।
मैं उस बिंदु तक पहुंच गया हूं जहां मेरा UIViewController
बहुत बड़ा है और मैं तालिका से संबंधित कार्यों को किसी अन्य वर्ग में ले जाना चाहता हूं।
मैंने उन तालिका विधियों को रखने के लिए निम्न श्रेणी बनाई है जैसे numberOfSectionsInTableView:
।
@interface ExerciseTableDelegate : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) ExerciseDataController *dataController;
@end
मैं में ऊपर वर्ग के लिए एक संदर्भ डाल करने के लिए सोचा है मेरी UIViewController
@interface ExerciseViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
{
UIPickerView *exercisePicker;
}
@property (strong, nonatomic) IBOutlet ExerciseTableDelegate *tableDelegate;
@end
मुझे उम्मीद थी कि स्टोरीबोर्ड के भीतर, जब मैं अपने तालिका के डेटा स्रोत या प्रतिनिधि दुकानों में से एक खींचें UITableViewController
पर देखें, यह मुझे मेरे प्रतिनिधि वर्ग से जुड़ने की क्षमता देगा। ऐसा नहीं हुआ
मैंने फिर स्टोरीबोर्ड के भीतर एक ऑब्जेक्ट बनाने की कोशिश की, इसे ExerciseTableDelegate
वर्ग दिया। मैं ऑब्जेक्ट में टेबल व्यू प्रतिनिधि को खींच सकता था, लेकिन यह वही ऑब्जेक्ट नहीं है जिसे मैंने अपने AppDelegate
में सेट किया था।
मेरा ऐप प्रतिनिधि
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
ExerciseViewController *rootViewController = (ExerciseViewController *)[[navigationController viewControllers] objectAtIndex:0];
ExerciseTableDelegate *tableDelegate = [[ExerciseTableDelegate alloc]init];
ExerciseDataController *dataController = [[ExerciseDataController alloc] init];
tableDelegate.dataController = dataController;
rootViewController.tableDelegate = tableDelegate;
// Override point for customization after application launch.
return YES;
}
- मैं अपने वस्तु एक सिंगलटन बनाने के लिए और अभी भी प्रतिनिधि में यह आरंभ की ज़रूरत है?
- क्या मुझे स्टोरीबोर्ड की बजाय कोड में यह सेटअप करने की आवश्यकता है?
- स्टोरीबोर्ड में कोई ऑब्जेक्ट गलत विचार है?
मुझे लगता है कि मैं करीब हूं लेकिन मुझे लगता है कि मैं बहुत कुछ कर रहा हूं।
धन्यवाद @ jrturton। वह चाल है। इसके अलावा, मुझे ExerciseViewControllers tableView के लिए आईबीओलेट बनाने के लिए मानक चीज करने की आवश्यकता है और स्टोरीबोर्ड में इसे तार करने की आवश्यकता है। – AllTheThingsICanDo