2015-12-30 2 views
0

Я рисую строку в UIView, используя drawRect & BezierPath. У меня также есть сегментированный контроллер с contentview1 и contentview2. Я хочу, чтобы строка отображалась в представлении контента1, но не в contentview2. Код для моей строки находится в файле uiview, а сегментированный элемент управления - в uiviewcontroller. Как я могу скрыть прямую линию между двумя представлениями контента.Скрытие строки при переключении между сегментированными элементами управления

InformationView.m (UIView)

- (void)drawRect:(CGRect)rect { 

UIBezierPath *path = [UIBezierPath bezierPath]; 
[path moveToPoint:CGPointMake(10.0, 10.0)]; 
[path addLineToPoint:CGPointMake(100.0, 100.0)]; 
path.lineWidth = 3; 
[[UIColor blueColor] setStroke]; 
[path stroke]; 

} 

InformationViewController.m (UIViewController)

segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; 
segmentedControl.frame = CGRectMake(12, 80, 300, 30); 
[segmentedControl addTarget:self action:@selector(segmentAction) forControlEvents: UIControlEventValueChanged]; 
segmentedControl.selectedSegmentIndex = 0; 
[self.view addSubview:contentView2]; 
[self.view addSubview:contentView ]; 

-(void) segmentAction { 

if (segmentedControl.selectedSegmentIndex == 0) { 

    [contentView setHidden:NO; 
    [contentView2 setHidden:YES]; 


} 
if (segmentedControl.selectedSegmentIndex == 1) { 

    [contentView setHidden:YES]; 
    [contentView2 setHidden: NO]; 
} 

Я wan't, чтобы добавить строку в contentview так он будет скрыт, когда выбран другой вид ,

ответ

1

Добавить недвижимость InformationView

.h

@interface InformationView : UIView 

@property (assign, nonatomic ,getter=isLineHidden) BOOL lineHidden; 

@end 

.m

@implementation InformationView 

- (void)drawRect:(CGRect)rect { 
    if (self.lineHidden == false) { 
     UIBezierPath *path = [UIBezierPath bezierPath]; 
     [path moveToPoint:CGPointMake(10.0, 10.0)]; 
     [path addLineToPoint:CGPointMake(100.0, 100.0)]; 
     path.lineWidth = 3; 
     [[UIColor blueColor] setStroke]; 
     [path stroke]; 
    } 
} 

-(void)setLineHidden:(BOOL)lineHidden{ 
    if (_lineHidden != lineHidden) { 
     _lineHidden = lineHidden; 
     [self setNeedsDisplay]; 
    } 
} 

@end 

Затем, когда вы хотите, чтобы скрыть линии

self.yourView.lineHidden = true; 
Смежные вопросы