2015-08-29 6 views
1

Я использую представление таблицы для отображения различных контактных данных, и в зависимости от того, какой из них вы выберете, будут указаны данные для этого конкретного ресурса. У меня был код, но я двигал проекты, поэтому не знаю, почему мои ярлыки не появляются. У меня есть список государственных контактов, а затем вы нажимаете один, который приводит к деталям. Вот мой код:Как мне получить свой текст с ярлыка, чтобы он появился?

StateContacts.h

#import <UIKit/UIKit.h> 

@interface StateContacts : UITableViewController <UITableViewDelegate, 
UITableViewDataSource> 
@property (nonatomic, strong) IBOutlet UITableView *tableView; 
@end 

StateContacts.m

#import "StateContacts.h" 
#import "State.h" 

@interface StateContacts() 

@end 

@implementation StateContacts 
{ 
    NSArray *state; 
    NSArray *num; 
    NSArray *fax; 
} 

@synthesize tableView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Initialize table data 
    state = [NSArray arrayWithObjects:@"Child Abuse Hotline", @"Drug Lab Remediation", @"Prevent Suicide TN", @"TN Crime Vict. Comp.", @"TN Department of Education", @"TN Homeland Security", @"TN State Police", @"TN Supreme Court", nil]; 
    num = [NSArray arrayWithObjects:@"(111) 111-1111", @"(222) 222-2222", @"(333) 333-3333", @"(444) 444-4444", @"(555) 555-5555", @"(666) 666-6666", @"(777) 777-7777", @"(888) 888-8888", nil]; 
    fax = [NSArray arrayWithObjects:@"n/a", @"n/a", @"n/a", @"n/a", @"n/a", @"n/a", @"n/a", @"n/a", nil]; 
} 


- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [state count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"myCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
    } 

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


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"showStateInfo"]) 
    { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     State *destViewController = segue.destinationViewController; 
     destViewController.stateName = [state objectAtIndex:indexPath.row]; 
     destViewController.pName = [num objectAtIndex:indexPath.row]; 
     destViewController.fName = [fax objectAtIndex:indexPath.row]; 
    } 
} 
@end 

State.h

#import <UIKit/UIKit.h> 

@interface State : UIViewController 

@property (nonatomic, strong) IBOutlet UILabel *stateLabel; 
@property (nonatomic, strong) IBOutlet UILabel *pNumber; 
@property (nonatomic, strong) IBOutlet UILabel *fNumber; 
@property (nonatomic, strong) NSString *stateName; 
@property (nonatomic, strong) NSString *pName; 
@property (nonatomic, strong) NSString *fName; 

@end 

State.m

#import "State.h" 

@interface State() 

@end 

@implementation State 

@synthesize stateLabel; 
@synthesize stateName; 
@synthesize pNumber; 
@synthesize fNumber; 
@synthesize pName; 
@synthesize fName; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) 
    { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Set the Label text 
    stateLabel.text = stateName; 
    //number and fax in array 
    pNumber.text = pName; 
    fNumber.text = fName; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

Я знаю, что многие люди раньше сталкивались с этой проблемой, и я пробовал то, что они предлагают, например, чтобы убедиться, что segues подключен правильно, очистка и перестройка. Все еще ничего не появляется для лейбла. Моя иерархия верна с UIView. Here - это моя раскадровка и соединения для деталей штата и StateContacts. Я просто не знаю, что еще попробовать.

+0

попробуйте заполнить значения в 'viewWillAppear' вместо' viewDidLoad' в 'State.m'. Также попробуйте 'NSLog' значения' stateName', 'pName' и' fName' –

+0

Еще одна вещь! Я не могу увидеть метод 'tableView: didSelectRowAtIndexPath:' в вашем классе 'StateContacts.m'. Я думаю, что ваш 'NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow];' не возвращает действительное значение, потому что я думаю, что не выбрана ячейка таблицы! Пожалуйста, подтвердите это также! –

+1

Вы хотите иметь только viewWillAppear, а не viewDidLoador или иметь оба? Кроме того, я не уверен, что понимаю, зачем мне нужен метод tableView: didSelectRowAtIndexPath, если у меня есть строка с NSIndexPath. Спасибо за помощь. –

ответ

1

Ваш код неверно определяет свойство tableView, которое скрывает исходное свойство tableView, унаследованное от UITableView. Чтобы исправить это, просто удалите свойство и соответствующую директиву @synthesize. Пока вы на нем, вы также можете удалить директивы @synthesize в классе State, так как компилятор теперь автоматически синтезирует свойства по умолчанию.

Обратите внимание: если вы удалили избыточную розетку, возможно, вам придется подключить ее в Interface Builder, поэтому не забудьте проверить ее.

Смежные вопросы