2009-08-14 7 views
0

Ich bin neu in Objective-C und brauche Hilfe!UIPageControl mit UIView mit Knopf

Ich folge dem Beispiel "PageControl", das im Internet gefunden werden kann. Ich fügte der Ansicht in der NIB eine Schaltfläche hinzu und verknüpfte eine Aktion, die die Implementierung unten findet.

mir
 
//ContactCardViewController.h 
@interface ContactCardViewController : UIViewController 
{ 
    int pageNumber; 
    NSMutableString *s; 
} 


//ContactCardViewController.m implementation 

- (id)initWithPageNumber:(int)page { 
    if (self = [super initWithNibName:@"ContactCardViewController" bundle:nil]) { 
     s = [[NSString alloc] initWithFormat:@"page: %d", page];    
    } 
    return self; 
} 


- (id)initWithString:(NSDictionary *)_s { 
    if (self = [super initWithNibName:@"ContactCardViewController" bundle:nil]) { 
     NSMutableString *t = [[NSMutableString alloc] initWithString:_s]; 
     s = t; 
    } 
    return self; 
} 


-(IBAction)callOrAddToContacts:(id)sender 
{ 
    jobtitleLabel.text = s; 
} 


//AppDelegate.m 
//in delegate that loads the scroll view with the view for the current page: 

- (void)loadScrollViewWithPage:(int)page { 
//init the view this way the page: and the correct page number is displayed 
    controller = [[ContactCardViewController alloc] initWithPageNumber:page ]; 

//init the view this way, the value of the first person is always displayed 
    controller = [[ContactCardViewController alloc] initWithString:[[self.allNames objectAtIndex:page] objectForKey:@"firstname"]]; 

} 


Bitte helfen zu verstehen, warum, wenn die Ansicht mit initWithString erstellt und dann über die Schaltfläche Aktion nur Wert für die zugegriffen:

Hier ist meine Definition für den View-Controller in der Seitensteuerung angezeigt wird Die erste Person in der Liste wird immer zurückgegeben. Wenn ich die Ansicht mit initWithPageNumber initiiere, hat s den richtigen Wert: X.

Antwort

0

Im InitWithString-Code übergeben Sie ein Dictionary, keine Zeichenfolge.

- (id)initWithString:(NSDictionary *)_s { 
    if (self = [super initWithNibName:@"ContactCardViewController" bundle:nil]) { 
     NSMutableString *t = [[NSMutableString alloc] initWithString:_s]; 
     s = t; 
    } 
    return self; 
}

Sie mögen, dass zu NSString ändern oder das NSMutableString ändern ... auf eine Instanz NSDictionary. Das Eine oder das Andere.

+0

Richtig danke! Kopieren/Einfügen Fehler. Mit

 - (id)initWithString:(NSMutableString *)_s { 
Gleiches Problem existiert. code innerhalb der Aktion, wenn versucht wird, s zu lesen, liest immer den ersten Wert in der Liste unabhängig von der Seite, auf der sich das Steuerelement gerade befindet – radiofrequency

0

Das Problem wurde in der PLIST-Datei gefunden. Der Code ist in Ordnung.