簡體   English   中英

將情節提要UIViews添加到數組

[英]Adding Storyboard UIViews to an Array

我對Google視而不見,無法找到所需的信息。 我是XCode和Objective-C的新手,但是進步很快...但是...

如果我在singleView應用程序上使用情節提要板,並且手動將UIViews添加到該情節提要板上(例如,表示要拖放的圖像),如何將這些UIViews放入數組中,以便以編程方式遍歷它們? 現在,我已經能夠通過代碼創建子視圖,然后將它們添加到數組中,但是如果我先在情節提要中創建子視圖(這簡化了整體布局的設計),然后嘗試添加那些情節提要UIViews到一個數組,該數組的X和Y位置為0。

我的第一個假設是在執行ViewDidLoad時(在我試圖填充Array的時候)沒有實例化在Storyboard中創建的UIView的實例,但是我不確定。 我的目標是能夠從Storyboard布局中直觀地將這些UIView放置在它們各自的位置,然后在應用程序啟動期間將這些UIView添加到Array中,在屏幕上保存其開始位置,等等。

//

好的,感謝安德魯(Andrew)對IBOutletCollections的引用,我終於在應用啟動時將UIViews存儲在一個數組中,但是它們表示的框架位置在控制台中是NSLog's到{0,0},即使它們在Storyboard上的其他位置也是如此。 我有一個從ViewDidLoad調用的Init方法,如下所示:

- (void)initialize {

    dragViews = [NSArray arrayWithObjects: dragView1, dragView2, dragView3, nil];
    dragTargets = [NSArray arrayWithObjects: dragTarget1, dragTarget2, dragTarget3, nil];

    NSLog(@"arrayImages contains %d items. Contents = %@",[dragViews count], dragViews);
    NSLog(@"arrayTarget contains %d items. Contents = %@",[dragTargets count], dragTargets);

    int i;
    int count = [dragViews count];
    for (i = 0; i < count; i++) {
        UIView *currentView = [dragViews objectAtIndex:i];
        NSLog (@"My view's center is: %@\n", NSStringFromCGRect(currentView.frame));
    }
}

但是我的控制台無法正確顯示其當前位置:

2013-02-15 10:43:09.538 dragAssign[4869:11303] arrayImages contains 3 items. Contents = (
    "<UIImageView: 0x92066b0; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9206710>>",
    "<UIImageView: 0x9006510; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9006570>>",
    "<UIImageView: 0x90065a0; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9006600>>"
)
2013-02-15 10:43:09.545 dragAssign[4869:11303] arrayTarget contains 3 items. Contents = (
    "<UIView: 0x92062a0; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9206350>>",
    "<UIView: 0x92055d0; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x92053a0>>",
    "<UIView: 0x9206650; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x92057d0>>"
)
2013-02-15 10:43:09.546 dragAssign[4869:11303] My view's center is: {{0, 0}, {0, 0}}
2013-02-15 10:43:09.546 dragAssign[4869:11303] My view's center is: {{0, 0}, {0, 0}}
2013-02-15 10:43:09.547 dragAssign[4869:11303] My view's center is: {{0, 0}, {0, 0}}

建議? 我將如何遍歷該數組並獲得正確的幀位置? 再次非常感謝安德魯為我指明了正確的方向!

您應該能夠使用IBOutletCollection做到這一點。 這里有一篇簡短的文章對此進行了解釋: http : //www.bobmccune.com/2011/01/31/using-ios-4s-iboutletcollection/

至於保存視圖的起始位置,您需要自己進行操作,方法是遍歷-viewDidLoad中的插座集合數組中的-viewDidLoad ,並將每個視圖的框架存儲在某個位置。

暫無
暫無

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

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