我當時在一個客戶項目中工作。我在ViewDidLoad
裏面寫了很多視圖定製代碼。我有用於數據存儲和訪問的模型。 該項目工作正常。他們聘請了一位新的iOS開發人員,他表示代碼不符合MVC體系結構。問爲什麼?他說這些意見是在viewDidLoad
內部創建的,這是該類的控制器,因此它不是可接受的代碼。我們應該如何處理它真正動態的視圖,並且不能使用Storyboard創建。在viewDidLoad中編寫代碼是否違反了MVC體系結構?
2
A
回答
1
你可以在這樣的控制器和視圖之間區別 -
使用- (void)loadView {}
委託方法從viewcontroller
加載你的看法。
假設你有一個視圖類 -
CustomView.h
CustomView.m -
- (id)init {
return [self initWithFrame:CGRectZero];
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.backgroundColor = [UIColor greenColor];
[self addSubview:self.centerView];
}
return self;
}
現在,在您的ViewController -
- (void)loadView
{
self.view = [[CustomView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
}
請參閱以下網址瞭解更多詳情 - http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/
希望這可以幫助你。
3
我的回答是否
從蘋果DOC
控制器對象
控制器對象充當一個或多個應用程序的查看對象以及一個或多個之間的中介它的模型對象。因此,控制器對象是視圖對象通過其來了解模型對象變化的渠道,反之亦然。控制器對象還可以執行應用程序的設置和協調任務,並管理其他對象的生命週期。
我認爲控制器有責任管理視圖的樣子。
在viewDidLoad
,在這裏寫一次性查看定製代碼很好。
但是,如果你寫了很多配置代碼到一個視圖。我認爲最好使用UIView的子類。這使您的代碼清晰易於調試和維護。
0
理想情況下,您的主視圖(由viewcontroller中的self.view訪問的視圖)有一個專用類 - 從UIView派生。
這裏面的視圖類(說Myview.m) - 您將創建不同的視圖方式中的子視圖 - 如init
(用於子視圖的實例),layoutsubviews
(用於子視圖的框架設置)和drawrect
(任何圖形繪製等)如果視圖有NIB,一些處理也會進入awakeFromNib。
相關問題
- 1. MVC體系結構瞭解
- 2. 示例代碼說明了iOS中的MVC體系結構
- 3. 如何編寫代碼文檔體系結構
- 4. 在ASP MVC體系結構中正確放置代碼?
- 5. MVC體系結構
- 6. 是否可以在ASP.NET MVC中使用n層體系結構?
- 7. 在編寫由LLVM後端編譯的代碼時,體系結構是否重要?
- 8. IClientValidatable實現是否違反了MVC中的DRY原則?
- 9. 概述/瞭解Eclipse中的體系結構代碼
- 10. 在MVC模式體系結構中,應該在模型還是控制器中寫入最大代碼?
- 11. 當使用Interface Builder創建UITabControllers,UINavigationControllers等時,是否違反了MVC主體?
- 12. MVC結構編碼
- 13. 線程是否違反了robots.txt?
- 14. 自動檢查是否違反了android:minSdkVersion
- 15. 這是否違反了EJB限制?
- 16. 這是否違反了德米特法?
- 17. .NET MVC體系結構是什麼?
- 18. 從ViewModel訪問數據庫是否違反了MVC原則?
- 19. 這是否確實違反了MVC分離問題
- 20. JSTL sql:查詢是否違反了MVC原則?
- 21. dataannotations是否違反了關注點分離? - asp.net mvc
- 22. Tabpanel的MVC體系結構
- 23. MVC體系結構開發
- 24. MVC體系結構實現
- 25. ASP.NET MVC體系結構
- 26. Java MVC體系結構
- 27. ASP.NET MVC RESTFul體系結構
- 28. MVC體系結構問題
- 29. ASP.NET MVC體系結構
- 30. 是否有可能在vala中編寫系統級代碼
你問他的意見嗎? – Azat
您可以爲您動態創建的每個視圖創建類。那麼你很容易將它們導入你的控制器。 –
他遠程工作。但是拒絕代碼不在MVC中的唯一原因是我在視圖DidLoad中創建了一些視圖。我唯一的疑問就是:在iOS應用程序開發中,如果我在ViewDidLoad中編寫視圖創建代碼,它是否違反了MVC架構? –