簡體   English   中英

iOS中多個UIView的UIView繼承

[英]UIView inheritance for multiple UIView in iOS

我正在嘗試構建一個簡單的iOS應用,該應用將簡單地將骰子以不同數量的面(d20,d12等)擲骰子

我想創建一個視圖,將在同一個UIViewController中多次使用該視圖,如下所示: http : //cl.ly/image/2s30353F3V1K (唯一更改的是邊數)

我不知道的是如何在情節提要中正確創建UI元素,而不必簡​​單地為每個不同數量的面復制並粘貼ContainerView的嵌入對象。

有一個簡單的方法可以正確地對此進行子類化嗎? 我是iOS故事板的新手,正在嘗試使用OO原則。

因此,您有一個DieViewController ,但是您需要不同的實例來具有不同的邊數。

@interface DieViewController
…
@property (nonatomic) NSInteger numberOfSides;
…
@end

問題是如何將適當數量的邊傳遞給每個包含的實例。 這就是嵌入segue的來源。在情節6SidedDie ,將情節6SidedDie embed segue標識符設置為唯一的名稱(我將使用6SidedDie )。 最后,在ViewController添加-prepareForSegue:sender:

@@implementation ViewController
…
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"6SidedDie"]) {
        DieViewController *dieViewController = segue.destinationViewController;
        dieViewController.numberOfSides = 6;
    }
}
…
@end

當然,您可以將其混合起來以允許大量骰子。 這是可以處理標識符6SidedDie10SidedDie

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier hasSuffix:@"Die"]) {
        DieViewController *dieViewController = segue.destinationViewController;

        if ([segue.identifier hasPrefix:@"6Sided"]) {
            dieViewController.numberOfSides = 6;
        } else if ([segue.identifier hasPrefix:@"10Sided"]) {
            dieViewController.numberOfSides = 10;
        }
    }
}

UPDATE

您可以使用self.viewControllers數組訪問DieViewController實例中的內容。

DieViewController *dieViewController = self.viewControllers[0]; // The first die view controller

if (dieViewController.numberOfSides == 6) {
    // This is the six sided die.
}

注意: self.viewControllers將不被訂購。 您將需要檢查numberOfSides以查看這是哪種類型的芯片。

我不清楚您的問題,但我有個主意

首先,您將獲得一個UIViewController實例

YourViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Identifier"];
[vc methodToChangeTheSideProperty:(NSString *)side];
CGRect frame = vc.view.frame;
//change frame of the view as you want
...
...
vc.view.frame = frame;

然后,將控制器的視圖添加到要顯示它的容器中

[yourViewContainer addSubview:vc.view];

暫無
暫無

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

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