1

Ich habe ein benutzerdefiniertes segmentiertes Steuerelement in meinem Tableview-Controller und eine Suchleiste im Header von Tableview. Wenn ich bis zur letzten Zelle blättere, springt die Tabellenansicht zurück. Aber Problem ist: Meine Suchleiste verbirgt sich hinter dem segmentierten Steuerelement und ein Leerraum erscheint am unteren Rand der Ansicht. Ich möchte, dass der Benutzer, wenn er in der Tabellenansicht nach oben scrollt, springt und zu seiner vorherigen Position zurückkehrt, wie im ersten Screenshot gezeigt.iOS: UITableview Header verstecken sich hinter der Ansicht auf Bildlauf nach oben

Hier Code meiner Segmented Steuerung:

self.projectSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Active Projects", @"All Projects", nil]]; 
    [self.projectSegmentControl addTarget:self action:@selector(actionSelectProject) forControlEvents:UIControlEventValueChanged]; 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    CGFloat screenWidth = screenRect.size.width -20; 
    self.projectSegmentControl.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-screenWidth-5,10, screenWidth, 30.0); 
    _segmentControlView = [[UIView alloc] initWithFrame: CGRectMake(0,60, screenRect.size.width,47.0)]; 
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    _segmentControlView.backgroundColor = [UIColor whiteColor]; 
    self.projectSegmentControl.backgroundColor = [UIColor whiteColor]; 
    [_segmentControlView addSubview:self.projectSegmentControl]; 
    [appDelegate.window addSubview:_segmentControlView]; 
    self.projectSegmentControl.selectedSegmentIndex = 0; 
    CGFloat screenHeight = screenRect.size.height; 
    if(screenHeight==480 || screenHeight==568) 
    { 
     CGPoint newOffset = CGPointMake(0, -[self.tableView contentInset].top); 
     [self.tableView setContentOffset:newOffset animated:YES]; 
    } 

    UIFont *font = [UIFont fontWithName:@"Avenir" size:12.0f]; 
    NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; 
    [_projectSegmentControl setTitleTextAttributes:attributes forState:UIControlStateNormal]; 

Es ist der Screenshot, wenn Tableview angezeigt: enter image description here

Wenn ich Tableview Bounce nach oben zurück, aber Suchleiste ist verstecken sich hinter dem segmentierten Kontrolle.

enter image description here

PS: Ich werde den Code hinzufügen, wenn nötig. Vielen Dank im Voraus

+0

posten Sie bitte Ihren Code – SeanChense

+0

Ich habe Code meiner segmentierten Steuerung hinzugefügt .. Wenn Sie mehr Code möchten, füge ich hinzu. –

Antwort

0

mit der oben genannten Post gehe davon aus, dass Sie

UITableViewController (nicht UIViewController)

Sie werden mit dem searchbar in der Kopfzeile der Tableview hinzugefügt.

dann programmatisch haben Sie einen segmentierten Controller erstellt und im Fenster

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    CGFloat screenWidth = screenRect.size.width -20; 
    self.projectSegmentControl.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-screenWidth-5,10, screenWidth, 30.0); 
    _segmentControlView = [[UIView alloc] initWithFrame: CGRectMake(0,60, screenRect.size.width,47.0)]; 
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

so, während Sie den Tisch, natürlich auch mit ihm bewegt sich entlang Header Scrollen hinzugefügt. so wurde es hinter der segmentierten Kontrolle versteckt.

SOLUTION

Schritt 1. Erstellen Uiviewcontroller (Not UITableViewController)
Schritt 2. Fügen 3. Fügen statischen searchbar unterhalb der segmentierten Regelsteuerung in der Ansicht
Schritt segmentiert. Schritt 4.so beim Scrollen der Tabellenansicht, segmentierte Steuerelement wird nicht ausgeblendet

Hoffe, das wird Ihnen helfen.

Verwandte Themen