Tôi không thể kết nối nguồn dữ liệu và ủy quyền các cửa hàng của chế độ xem bảng trong bảng phân cảnh cho lớp được ủy nhiệm tùy chỉnh của tôi. Tôi muốn ủy nhiệm các hàm bảng đó cho một lớp khác. Có một cái gì đó tôi đã hiểu lầm về phái đoàn, cửa hàng và những thứ dây dẫn trong một bảng phân cảnh.Nguồn dữ liệu UITableView và đại biểu sẽ không kết nối với lớp tùy chỉnh
nền
Tôi có một UIViewController
rằng có một cái nhìn chứa một UIPickerView
và giữa những thứ khác, một UITableView
.
Tôi đã đạt đến điểm số UIViewController
của tôi quá lớn và tôi muốn di chuyển các hàm liên quan đến bảng vào một lớp khác.
Tôi đã tạo lớp sau để chứa các phương pháp bảng như numberOfSectionsInTableView:
.
@interface ExerciseTableDelegate : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) ExerciseDataController *dataController;
@end
Tôi đã suy nghĩ để đặt một tham chiếu đến lớp trên trong tôi UIViewController
@interface ExerciseViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
{
UIPickerView *exercisePicker;
}
@property (strong, nonatomic) IBOutlet ExerciseTableDelegate *tableDelegate;
@end
Tôi đã hy vọng rằng trong kịch bản, khi tôi kéo một trong những nguồn dữ liệu hoặc đại biểu các cửa hàng của bảng của tôi xem trên UITableViewController
nó sẽ cho tôi khả năng kết nối với lớp được ủy nhiệm của tôi. Nó không.
Sau đó tôi đã cố gắng tạo một đối tượng trong bảng phân cảnh, cho nó lớp ExerciseTableDelegate
. Sau đó tôi có thể kéo bảng xem đại biểu đến đối tượng, nhưng đây không phải là đối tượng tương tự mà tôi thiết lập trong AppDelegate
của tôi.
ứng dụng đại biểu của tôi
- (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;
}
- Tôi có cần phải làm cho đối tượng của tôi một singleton và vẫn khởi nó trong các đại biểu?
- Tôi có cần phải thực hiện thiết lập này trong mã thay vì trong Bảng phân cảnh không?
- Tạo đối tượng trong bảng phân cảnh có ý tưởng sai không?
Tôi cảm thấy mình thân thiết nhưng tôi nghĩ mình đang làm quá nhiều.
Thankyou @jrturton. Điều đó đã làm các trick. Thêm vào đó, tôi cần làm điều chuẩn để tạo ra một IBOutlet cho bảngViewViewViewView và cần thiết để kết nối nó trong bảng phân cảnh. – AllTheThingsICanDo