//

Detailview lukt niet.

Detailview lukt niet. discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hallo allemaal, ik krijg het niet voor elkaar om een detailview toe te voegen dus als je op een een woord klik die in een ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Berichten van vandaag

Reageren

 

Discussietools Weergave
  #1  
Oud 30-08-11, 16:44
Meubelskop Meubelskop is offline
• iOS 4.2.1
• 4.3.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2010
Berichten: 15
Standaard Detailview lukt niet.

Hallo allemaal,

ik krijg het niet voor elkaar om een detailview toe te voegen dus als je op een een woord klik die in een tableview staat dat je naar een nieuwe pagina gaat. Ik heb op internet video's gekeken, tutorials gevolgd en van alles geprobeerd maar het werkt niet kan iemand mij helpen?

Alvast bedankt!
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 30-08-11, 17:14
DJ14 DJ14 is offline
• iOS 7.1
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Feb 2010
Berichten: 121
Standaard

Zorg dat de UIViewController met de tableView erin binnen een navigationController staat. Gebruik dan de tableView delegate method tableView: didSelectRowAtIndexPath:

Code:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

UIViewController *detailViewController = [[UIViewController alloc] init];
//Hier optioneel nog waarden doorgeven aan de detailViewController aan de hand van de row die geselecteerd is
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];

}
  #3  
Oud 30-08-11, 17:35
Meubelskop Meubelskop is offline
• iOS 4.2.1
• 4.3.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2010
Berichten: 15
Standaard

Hee,

dit heb ik al geprobeerd
Citaat:
- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {

DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewControllervController animated:YES];
[dvController release];
dvController = nil;
}
Maar het werkt gewoon niet.
  #4  
Oud 30-08-11, 22:10
Hollance Hollance is offline
• iOS 5.1.1
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2010
Locatie: Breda
Berichten: 68
Standaard

"Het werkt gewoon niet" <-- daar kunnen we niet veel mee.

Wat werkt er niet? Wat heb je al geprobeerd?

Je kunt door NSLog() toe te voegen kijken of bepaalde delen van de je code uitgevoerd worden (of met een debugger breakpoint). Als er niets gebeurt als je ergens op tapt, probeer dan eens met NSLog() te achterhalen of je code uberhaupt wel aangeroepen wordt.
  #5  
Oud 31-08-11, 13:44
TUX2K TUX2K is offline
• iOS 14.0
• 8.1.2
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2008
Locatie: Amsterdam
Berichten: 174
Standaard

Heb je een UINavigationController om je TableViewController geplaatst?
  #6  
Oud 31-08-11, 16:15
Meubelskop Meubelskop is offline
• iOS 4.2.1
• 4.3.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2010
Berichten: 15
Standaard

Dit is mijn code:

Citaat:
- (void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames"
ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc]
initWithContentsOfFileath];
self.allNames = dict;
[dict release];

[self resetSearch];
[table reloadData];
[table setContentOffset:CGPointMake(0.0, 44.0) animated:NO];
}

- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.table = nil;
self.search = nil;
self.allNames = nil;
self.names = nil;
self.keys = nil;
[super viewDidUnload];
}

- (void)dealloc {
[table release];
[search release];
[allNames release];
[names release];
[keys release];
[super dealloc];
}

#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)numberOfSectionsInTableViewUITableView *)tableView {
return ([keys count] > 0) ? [keys count] : 1;
}

- (NSInteger)tableViewUITableView *)tableView
numberOfRowsInSectionNSInteger)section {
if ([keys count] == 0)
return 0;
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
return [nameSection count];
}

- (UITableViewCell *)tableViewUITableView *)tableView
cellForRowAtIndexPathNSIndexPath *)indexPath {
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];

NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];

static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
SectionsTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SectionsTableIdentifier] autorelease];
}

cell.textLabel.text = [nameSection objectAtIndex:row];
return cell;
}

- (NSString *)tableViewUITableView *)tableView
titleForHeaderInSectionNSInteger)section {
if ([keys count] == 0)
return nil;

NSString *key = [keys objectAtIndex:section];
if (key == UITableViewIndexSearch)
return nil;
return key;
}

- (NSArray *)sectionIndexTitlesForTableViewUITableView *)tableView {
if (isSearching)
return nil;
return keys;
}

#pragma mark -
#pragma mark Table View Delegate Methods
- (NSIndexPath *)tableViewUITableView *)tableView
willSelectRowAtIndexPathNSIndexPath *)indexPath {
[search resignFirstResponder];
isSearching = NO;
search.text = @"";
[tableView reloadData];
return indexPath;
}

#pragma mark -
#pragma mark Search Bar Delegate Methods
- (void)searchBarSearchButtonClickedUISearchBar *)searchBar {
NSString *searchTerm = [searchBar text];
[self handleSearchForTerm:searchTerm];
}

- (void)searchBarUISearchBar *)searchBar
textDidChangeNSString *)searchTerm {
if ([searchTerm length] == 0) {
[self resetSearch];
[table reloadData];
return;
}
[self handleSearchForTerm:searchTerm];
}

- (void)searchBarCancelButtonClickedUISearchBar *)searchBar {
isSearching = NO;
search.text = @"";
[self resetSearch];
[table reloadData];
[searchBar resignFirstResponder];
}

- (void)searchBarTextDidBeginEditingUISearchBar *)searchBar {
isSearching = YES;
[table reloadData];
}

- (NSInteger)tableViewUITableView *)tableView
sectionForSectionIndexTitleNSString *)title
atIndexNSInteger)index {
NSString *key = [keys objectAtIndex:index];
if (key == UITableViewIndexSearch) {
[tableView setContentOffset:CGPointZero animated:NO];
return NSNotFound;
}
else return index;
}

@end
  #7  
Oud 01-09-11, 13:22
JornZ JornZ is offline
• iOS 6.1.3
• 6.1.2
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2010
Berichten: 364
Standaard

Waar is je didSelectRowAtIndexPath method? Die wordt aangeroepen als je op een op een cell drukt. Daar moet de code staan om de nieuwe view te laten zien. Dit kan dan middels het pushen van een viewcontroller als je huidige view onderdeel is van een navigationcontroller.

Een alternatief vind je mogelijk in presentModalViewController en heb je geen navigationcontroller nodig. Alleen begrijp ik uit de documentatie van Apple dat deze vooral bedoeld zijn voor als je nieuwe data gaat invoeren.
  #8  
Oud 01-09-11, 21:56
Meubelskop Meubelskop is offline
• iOS 4.2.1
• 4.3.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2010
Berichten: 15
Standaard

Maar die didSelectRowAtIndexPath, die is toch voor de detailview? Die heb ik eruit gehaald omdat het bij mij niet werkt dus ik dacht misschien kunnen jullie mij laten zien waar hij moet?
  #9  
Oud 02-09-11, 17:11
JornZ JornZ is offline
• iOS 6.1.3
• 6.1.2
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2010
Berichten: 364
Standaard

Lees eens de documentatie van Apple over het UITableViewDelegate protocol, zie: Loading…

Als je dus de viewcontroller waarin je de table hebt geplaatst de delegate wilt laten zijn dan moet je in de bijbehorende .h file aangeven dat de viewcontroller conformeert aan het UITableViewDelegate protocol. Dus dat wordt zoiets als:

Code:
@interface myViewController : UIViewController <UITableViewDelegate> { 
...
...
Of je kiest als klasse niet UIViewController maar UITableViewController en dan hoef je niet aan te geven dat je aan het protocol conformeert want dat is dan een gegeven. Vervolgens betekent dit dat je alle (optionele) methods uit het UITableViewDelegate protocol kan implementeren en er een eigen invulling aan kan geven in je .m file van myViewController. In de documentatie van Apple (zie de link) staat aangegeven wanneer welke method wordt aangeroepen. Je vindt daar dus bijvoorbeeld terug als beschrijving bij de didSelectRowAtIndexPath method: "Tells the delegate that the specified row is now selected.". Dus nu weet je dat als je wilt dat er een nieuwe view wordt geopend wanneer er op een cell (woord) in je table drukt dat je daarvoor code zal moeten invoegen in de didSelectRowAtIndexPath method. Wat je mee zult krijgen is de locatie van de cell in de table in de variabele indexPath.
Reageren



Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
DetailView Meubelskop Ontwikkelen voor iOS 2 08-08-11 11:53
DetailView with Elements in it gobelz Ontwikkelen voor iOS 4 29-01-11 01:58
UITableView ---> DetailView gobelz Ontwikkelen voor iOS 4 29-01-11 00:21
ipad op 4.2 beta werkt niet..downgraden naar 3.2.2 lukt niet..:-( tbeumer@ iPad algemeen 15 20-09-10 20:04
iBooks problemen: Downloaden boeken lukt niet en pdf's worden niet getoond erwinKrol iPhone algemeen 17 24-06-10 11:45

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 20:07.