Переход от табличного представления к другим подробным представлениям в xcode

#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. Я действительно в замешательстве. Я понимаю базовый код, но все еще чувствую себя потерянным. Пожалуйста, помогите. Это для школьного проекта, и я был бы очень признателен за помощь.