2009-05-28 5 views
0

Ich habe eine UIViewController () mit einem View Xib verdrahtet. Ich lasse eine TextView auf der UIView fallen und es erscheint als Unteransicht in der Hierarchie in IB.
ContentViewController hat ein Etikett als Steckdose, die mit einem Etikett auf ContentView.xib verdrahtet ist. Wenn der folgende Code ausgeführt wird, wird in der ersten Ansicht die Textansicht angezeigt, während beim Scrollen durch die anderen Ansichten/Seiten nur die Beschriftung angezeigt wird.Hinzufügen von UITextView als Unteransicht in UIView dann zu UIScrollView

Ich kann eine Schaltfläche oder ein Textfeld auf die Ansicht in IB ziehen und sie sind alle da, während ich durch die Seiten blättern. Der obige Text ist ebenfalls auf dem Etikett angegeben. Die Textansicht verschwindet nach der ersten Seite. Ich kann seinen Text auch nicht einstellen. Ich habe eine neue Textansicht auf die UIView gezogen und sie verschwindet auch nach der ersten Seite. Gibt es etwas anderes, was ich für die Textansicht tun muss?


habe ich festgestellt, dass die UIScrollView auf jeder Seite. Wenn ich vertikal wische, wo die Bildlaufansicht ist, wird Text angezeigt. Aber ich muss das für alle Scrollviews nach dem ersten tun.

Sobald ich jedoch wische, bleibt der Text sichtbar, bis die App neu gestartet wird. Wenn nicht genügend Text zum Scrollen vorhanden ist, wird die Textansicht nicht angezeigt. Irgendwelche Vorschläge zu diesem Verhalten?

Antwort

1

Versuchen:

[textView setNeedsDisplay];


Original-Antwort

Sie müssten nicht anders mit dem Textview beschäftigen.

Ich mache mir zuerst Sorgen über Ihren Aufruf von "loadview". Du solltest das niemals direkt anrufen. Es wird bei Bedarf automatisch aufgerufen.

Außerdem sollten Sie Contentview vor der Schleife deklarieren und Speicher verlieren.

Ihr anderes Problem ist, dass Sie nie den Rahmen jeder Ansicht während der Schleife ändern. Sie alle haben einen Ursprung von {0,0}. Soweit ich aus deinem Code ersehen kann. Dies könnte der Grund sein, warum deine Ansichten ausgeblendet sind.

Zu guter Letzt, ich würde mich nicht auf eine Style-Notiz nennen, um die Controller XXXXXview anzuzeigen, sie sollten das Wort Controller in ihnen haben.

CGRect frame; 
    ContentViewController *myContentViewController = nil; 

    for(int i=0; i< 5; i++){ 
     myContentViewController = [[myContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]]; 

     frame = myContentViewController.view.frame; 
     frame.origin.x=(frame.size.width*i); 
     myContentViewController.view.frame=frame; 

     myContentViewController.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i]; 
     [self.scrollView addSubview: myContentViewController.view]; 
     [myContentViewController release]; 
    } 

hinzuzufügen: Auch die scrollviews content Rahmen Eigenschaft überprüfen:

scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight); 

Um weitere hinzufügen:

Versuchen Sie, die Textview programmatisch in viewDidLoad oder viewDidAppear Zugabe zu Schau, ob das funktioniert.

Nach Ihren Kommentaren, wenn ich eine andere Schätzung nehmen musste, würde ich sagen, dass Sie die TextView irgendwo anders in Ihrem Code manipulieren, nachdem es hinzugefügt wurde. Beginnen Sie, alle Zeilen auszukommentieren, die sich auf die textView auswirken, und sehen Sie, was passiert.

+0

Nicht viewDidLoad, loadView. Der Aufruf von viewDidLoad ist manchmal notwendig, aber nicht loadView (AFAIK). Haben Sie die contentView-Größe Ihrer Bildschirmansicht auch wie folgt festgelegt: (numberOfContentViews * contentViewWidth)? –

+0

Danke. Der Aufruf von viewDidLoad ist temporär, bis die Textansicht funktioniert. Andernfalls muss ich nicht-iBOutlet-Eigenschaften erstellen und dann während viewDidLoad zuweisen. Die Textansicht wird nach der ersten Ansicht mit Ihrem Code immer noch nicht angezeigt. Das Etikett wird weiterhin gut angezeigt. Ich kann auch ein UIWebView und UIScrollView mit einem Label darin hinzufügen. Sie zeigen auf allen Seiten. – 4thSpace

+0

Ja zur Frage (numberOfContentViews * contentViewWidth). Die Inhaltsansichten werden gut angezeigt. Ich kann in jeder Ecke Steuerelemente platzieren und sie sehen. Ich habe auch versucht, eine Textansicht in der Mitte zu platzieren, aber sie verschwindet nach der ersten Ansicht. – 4thSpace