Antwort

14

Möchten Sie den Interface Builder verwenden oder nur in Code?

Mit IB Betrieb ist sehr einfach, Sie müssen nur segmentierten Steuerelement auf Platz in der Navigationsleiste, wo der Titel befindet platzieren. Der Titel wird durch die segmentierte Kontrolle ersetzt.

Wenn Sie dies in Code erreichen möchten, beziehen Sie sich bitte auf this section of iPhone reference library. Es scheint, dass Sie die Eigenschaft titleView des Navigationselements auf Ihr segmentiertes Steuerelement festlegen müssen, das eine Unterklasse von UIView ist, also ist dies völlig legal.

+1

möchten Sie den Link etwas dagegen zu aktualisieren, da es veraltet ist? thx – xon1c

+0

@ xon1c: ok, fertig – madej

1

in viewDidLoad:

obj-c:

NSArray *segmentTitles = @[ 
    @"segment1", 
    @"segment2", 
]; 

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTitles]; 
segmentedControl.selectedSegmentIndex = 0; 
segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
// change the width from 400.0 to something you want if it's needed 
segmentedControl.frame = CGRectMake(0, 0, 400.0f, 30.0f); 
[segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged]; 

self.navigationItem.titleView = segmentedControl; 

swift:

let segmentTitles = [ 
    "segment1", 
    "segment2", 
] 

let segmentedControl = UISegmentedControl(items: segmentTitles) 
segmentedControl.selectedSegmentIndex = 0 
segmentedControl.autoresizingMask = UIViewAutoresizing.FlexibleWidth 
// change the width from 400.0 to something you want if it's needed 
segmentedControl.frame = CGRectMake(0, 0, 400.0, 30.0) 
segmentedControl.addTarget(self, action: "segmentChanged:", forControlEvents: UIControlEvents.ValueChanged) 

self.navigationItem.titleView = segmentedControl 
Verwandte Themen