[英]Managing subviews in Cocoa Touch
子類化UIViewController將提供此功能。 例如,MultipleChoiceQuestionController將是UIViewController的子類。 MultipleChoiceQuestionController將包含問題文本(UILabel或UITextView)和幾個按鈕(UIButton)。 您可以在MultipleChoiceQuestionController中創建一個自定義構造函數,該構造函數將用相關的問題字符串和其他相關信息填充視圖。
當您要將MultipleChoiceQuestionController的視圖添加到主視圖的子視圖時,只需執行以下操作:
[myMainView addSubview:instanceOfMultipleChoiceQuestionController.view];
您可以在視圖本身上處理事件,或者您的視圖控制器可以具有針對不同類型的問題而更改的委托類。 該代表將處理不同的輸入,並對用戶的觸摸以不同的方式做出反應。
這里有一些想法的代碼。
// In QuestionViewControllerDelegateProtocol.h
@protocol QuestionViewControllerDelegateProtocol
// Define the methods you want here
- (void)touchesBegan;
- (void)touchesEnded;
- (void)questionLoaded;
@end
// In QuestionViewController.h
@interface QuestionViewController {
id<QuestionViewControllerDelegateProtocol> delegate;
}
@end
// In QuestionViewController.m
@implementation QuestionViewController
- (void)viewDidLoad:(BOOL)animated {
[delegate questionLoaded];
}
- (void)touchesBegan {
// Some processing logic.
[delegate touchesBegan];
}
@end
我遇到了同樣的問題,根據Apple的文檔,這是您應該執行的操作:
注意:如果要將單個屏幕划分為多個區域並分別管理每個區域,請使用通用控制器對象(來自NSObject的自定義對象)而不是視圖控制器對象來管理屏幕的每個子部分。 然后,使用單個視圖控制器對象來管理通用控制器對象。 視圖控制器協調整個屏幕交互,但根據需要將消息轉發到它管理的通用控制器對象。
這是一個非常好的小解決方案,為您提供了視圖控制器的所有優點,而又不會違反蘋果規則。
從頁面:
這是一個通用控制器類,可用於處理子區域。 它是根據UIViewController建模的,但符合Apple的建議。
您的視圖控制器將創建實例,並負責管理子視圖控制器。 或者,您可以進一步細分視圖層次結構,並在其他子視圖控制器中創建子視圖控制器。 在這兩種情況下,實例化對象的控制器都負責管理子視圖控制器。 負責人的控制器稱為“父控制器”。 子類例如在需要顯示模式對話框時可以使用視圖控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.