簡體   English   中英

自定義UIViewController和自定義UIView

[英]Custom UIViewController and custom UIView

我有三個相似之處。 例如,位置30,30處的UIImageView和相同位置處的三個UILabel。

沒有復制和粘貼或冗余代碼的最佳解決方案是什么?

當我用筆尖創建所有三個視圖時,我必須復制並粘貼相同的部分...

我開始實現自己的UIViewController和一個基本的UIView。 我的代碼如下所示:

- (id)init {

    if((self = [super init])) {

        image = [[UIImageView alloc] init];
        header = [[UILabel alloc] init];

        [self addSubview:image];
        [self addSubview:header];
    }

    return self;   
}

- (void)layoutSubviews {

    [super layoutSubviews];

    image.frame = CGRectMake(30, 30, 20, 20);

    header.frame = CGRectMake(30, 100, 200, 30);
}

當我將具有該視圖的控制器推入堆棧時,該視圖顯示錯誤。 圖片和標簽由titleheader(navigationcontroller)覆蓋...

有人可以解釋一下這個布局系統的工作原理嗎?ios sdk是我曾經使用過的最差的sdk :(

在筆尖中創建視圖時,我看不到復制和粘貼的必要性嗎? 它絕對消除了按代碼定位視圖的必要性。 順便說一句:“最糟糕”的代碼通常是我們不太了解的代碼。

如果他們需要一套通用的內務處理代碼要素,則可以采用一種方法,該方法將視圖作為參數並在不違反DRY原理的情況下進行操作(頓茲重復您自己)

當我用筆尖創建所有三個視圖時,我必須復制並粘貼相同的部分...

您是否認識到,像視圖控制器這樣的對象可能裝載多個筆尖(甚至簡單)? 您的所有三個視圖控制器都可以從同一個nib文件加載接口的公共部分,也可以從自己的nib文件加載它們自己的接口。 一種方法是將公用接口的插座與管理公用接口所需的任何代碼(設置,操作等)一起放在一個類中。 然后,您可以為每個不同的視圖控制器創建該類的子類,並讓每個子類加載自己的筆尖。 最后一步是將子類中的接口插入超類的視圖層次結構中,或將父類中的接口插入子類的視圖層次結構中,以您所處的情況為准。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM