2015-09-19 71 views
1

這可能是奇怪的問題。我知道如何使用循環如何在故事板或XIB中以編程方式分配uiview?

int x=0; 
int y=0; 
for(int i = 0: i < 10: i++) 
{ 
uiview *name = [[uiview alloc] initwithframe:(x,y,10,10); 
[self.view addsubview:name]; 
y+=10; x+=10; 
} 

但這裏重複一個UIView,我需要的是在stroyboard或廈門國際銀行分配的的UIView,它有像

IBOutlet UIView *dummyView; 

連接需要改變dummyview y位置(像複製過去或重複相同的觀點)。是否可以像上面的代碼那樣做(for循環)

int y=0; 
for(int i = 0: i < 10: i++) 
{ 
// need to change dummyview y position 
y+=10; 
} 

在這裏,10是可變的。

注: 有可能與這裏的UITableView是動態dummyview是TableCell的,我不希望使用內部的TableCell的tableview子視圖。

而且還可以使用scrollview,但我不想浪費內存,因爲這個tableviewcell像顯示更多的選項(記住uilable顯示更多或更少的選項)。如果你想看到更多的uiview,而不僅僅是它會重複這個觀點,否則它只是一個uiview。

更新: 我想以編程方式複製過去的uiview。來自xib或storyboard的UIView(subview for self.view)。 我正在使用自動佈局。 此uiView有多個uibutton和uilabel我如何識別該特定的視圖和uibutton等,

希望它是可以理解的:) ..如果它不是添加評論。

+0

我不完全明白。你只是想多次加載XIB來添加子視圖? – Wain

+0

@是的,喜歡那樣。 xib有一個uiview,我想要加載多次。 – user3589771

回答

0

不知道你的意思,但如果要複製多個視圖,你可以試試這個

int y=0; 
for(int i = 0: i < 10: i++) 
{ 
    UIView *copyOfView = (UIView*)[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:_dummyView]]; 
    CGRect frame = copyOfView.frame; 
    frame.origin.y = i*10; 
    copyOfView.frame = frame; 
    [self.view addSubView:copyOfView]; 
} 

如果您的.xib文件中加載的UIView你應該更換:

UIView *copyOfView = [[[NSBundle mainBundle] loadNibNamed:@"YourCustomView" owner:self options:nil] objectAtIndex:0]; 
+0

是的,你是正確的我想多次複製uivew,而不是從代碼中查看。我正在使用自動佈局,所以它不工作。 :(但它創建0寬度的多個視圖...並且y不會更改... – user3589771

+0

如果要更改設置自動佈局的UIview框架,可以使用 'self.view.translatesAutoresizingMaskIntoConstraints = YES'。但是這會打破其他約束,所以你應該通過代碼添加自動佈局(約束),這個鏈接將有助於[link](http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/) –

+0

感謝你的支持,但我已經厭倦了,鏈接它不適用於我。for循環Y位置的變化影響其他uiview約束。所以只有我問這個問題。 – user3589771

0

我米不知道你將能夠重新使用故事板中的視圖。 實現你想要做的正確方法是用xib創建一個新的UIView子類。 在IB中進行設計。添加所需的所有子視圖並附加IBOutlets。 你有一個可重用的視圖。

相關問題