2014-07-21 20 views
0

介紹用戶定義的IOS接口上

我寫一個應用程序,其中一個屏幕上的接口可以根據先前的屏幕上的用戶輸入而改變。我現在想要做的是加載x個滑塊,從前一個屏幕獲得x。我遇到的真正問題是不是每個我使用的滑塊都必須被命名和定義?我想了一個辦法做到這一點,但我不完全知道如何實現,如果你能告訴我這將真正理解

僞碼

-(void) loadInterface { 
    // Set up a frame 
    CGRect myFrame = CGRectMake(10.0f, 100.0f, 250.0f, 25.0f); 

    for (int i = 0; i < x; i++) { 
      [self newSlider] 
     // Retrieve info here about the slider and pass it to newSlider 
    } 

} 

-(void) newSlider (info about slider) { 

    // Here I need the code to load a slider 
    // If I use something like this: 
    // UISlider *slider1 = [[UISlider alloc] initWithFrame:myFrame]; 
    // The next time this method is loaded the slider will be overwritten right? 

} 
+0

什麼是你希望滑塊的最大數量有? – p4sh4

+0

也許5或6,事情是我想將其應用於其他可能更復雜的自定義界面部分 – TurtleFan

+0

有沒有一種方法可以根據字符串命名?這將解決我認爲的問題 – TurtleFan

回答

0

你可以使用一個NSMutableDictionary跟蹤所有的滑塊,儘管也許你完全不需要這些滑塊。

newSlider您創建一個滑塊,你應該通過

[self addSubview:slider]; 

從而創建創建位置將出現在位置的所有滑塊將其添加到一些視圖(我假設self),並不會消失,除非你將它們從視圖中移除。

你可以採取這個片段作爲如何創建一個滑塊一個例子:如果你定義正確frame

CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0); 
UISlider *slider = [[UISlider alloc] initWithFrame:frame]; 
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; 

,你可以讓你所有的滑塊在你的用戶界面很好地保持一致。

當滑塊作用是通過由用戶攜帶,該sliderAction:方法被調用,它有一個參數指的是滑塊:

- (void)sliderAction:(UISlider* slider) { 
    ... 
} 

,所以你確切地知道哪些滑被起訴,這通常就足夠了以處理該行動。

在任何情況下,正如我所說,如果你想保留所有的滑塊的軌道,他們在制定的過程中添加到的NSDictionary:

[self.sliderDict setObject:newSlider forKey:@"nth-slider-name"]; 
0

你並不需要爲每一個新變量滑塊,因爲您在newSlider方法中使用的UISlider實例的範圍僅限於該方法。一旦程序退出該方法,該變量就會自由使用。

你也應該通過哪些滑它是該方法,這可以被用來放置它,併爲視圖供以後使用標籤:

-(void) loadInterface { 
    // Set up a frame 
    CGRect myFrame = CGRectMake(10.0f, 100.0f, 250.0f, 25.0f); 

    for (int i = 0; i < x; i++) { 
     [self newSlider:i] 
     // Retrieve info here about the slider and pass it to newSlider 
    } 

} 

-(void) newSlider:(int)sliderNumber { 
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(0, sliderNumber * 100, 320, 50)]; 
    slider.tag = sliderNumber; 
    [self.view addSubview:slider]; 
}