#ios #xcode #uitableview #detailsview
#iOS #xcode #uitableview #detailsview
Вопрос:
Я начинающий программист. И у меня возник вопрос. В настоящее время у меня есть табличное представление в моем приложении. В нем есть три строки: История, теория и прикладное использование. Я бы хотел, чтобы каждый из них переходил к другому подробному представлению. Однако каждый из них переходит только к одному из подробных представлений.
Я думаю, что проблема в
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"Magnets_AU_Aubrey" bundle:[
Пожалуйста, помогите любому. Тремя XIB являются Magnets_AU_Aubrey, Magnets_History_Aubrey и Magnets_Theory_Aubrey
#import "DisclosureButtonController.h"
#import "NavAppDelegate.h"
#import "DisclosureDetailController.h"
#import "DetailViewController.h"
@implementation DisclosureButtonController
@synthesize list;
- (void)viewDidLoad {
NSArray *array = [[NSArray alloc] initWithObjects:@"History", @"Theory", @"Applied Use", nil];
self.list = array;
[array release];
[super viewDidLoad];
}
- (void)viewDidUnload {
self.list = nil;
[childController release], childController = nil;
}
- (void)dealloc {
[list release];
[childController release];
[super dealloc];
}
#pragma mark -
#pragma mark Table Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [list count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString * DisclosureButtonCellIdentifier =
@"DisclosureButtonCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
DisclosureButtonCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:DisclosureButtonCellIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
NSString *rowString = [list objectAtIndex:row];
cell.textLabel.text = rowString;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
[rowString release];
return cell;
}
#pragma mark -
#pragma mark Table Delegate Methods
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"Magnets_AU_Aubrey" bundle:[
NSBundle mainBundle]];
[self.navigationController pushViewController:dvController animated:YES];
[dvController release];
dvController = nil;
}
- (void)tableView:(UITableView *)tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
if (childController == nil) {
childController = [[DisclosureDetailController alloc] initWithNibName:@"MagnetsAubreyCreditsDisclosureDetail" bundle:nil];
}
childController.title = @"Disclosure Button Pressed";
NSUInteger row = [indexPath row];
NSString *selectedMovie = [list objectAtIndex:row];
NSString *detailMessage = [[NSString alloc]
initWithFormat:@"School",selectedMovie];
childController.message = detailMessage;
childController.title = selectedMovie;
[detailMessage release];
[self.navigationController pushViewController:childController animated:YES];
}
@end
Комментарии:
1. В чем здесь проблема?
Ответ №1:
NSArray *array = [[NSArray alloc] initWithObjects:@"History", @"Theory", @"Applied Use", nil];
Теперь сделайте то же самое для xibs. Создайте массив и заполните его именами xib. Затем в didSelectRowAtIndexPath для получения правильного имени xib примените ту же логику, что и в cellForRowAtIndexPath для получения текста ячейки.
Комментарии:
1. Я собираюсь попытаться выполнять это по одному шагу за раз, потому что я довольно новичок в этом: будет ли массив выглядеть следующим образом: xibArray *array = [[xibArray alloc] initWithObjects:@»Magnets_History_Aubrey», @»Magnets_Theory_Aubrey», @ «Magnets_AU_Aubrey», nil]; в строке прямо под NSArray?
2. Вы должны прочитать этот документ в качестве первого шага: developer.apple.com/library/mac/documentation/Cocoa/Conceptual /…
3. Я действительно в замешательстве. Я понимаю базовый код, но все еще чувствую себя потерянным. Пожалуйста, помогите. Это для школьного проекта, и я был бы очень признателен за помощь.