Я использую представление таблицы для отображения различных контактных данных, и в зависимости от того, какой из них вы выберете, будут указаны данные для этого конкретного ресурса. У меня был код, но я двигал проекты, поэтому не знаю, почему мои ярлыки не появляются. У меня есть список государственных контактов, а затем вы нажимаете один, который приводит к деталям. Вот мой код:Как мне получить свой текст с ярлыка, чтобы он появился?
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. Я просто не знаю, что еще попробовать.
попробуйте заполнить значения в 'viewWillAppear' вместо' viewDidLoad' в 'State.m'. Также попробуйте 'NSLog' значения' stateName', 'pName' и' fName' –
Еще одна вещь! Я не могу увидеть метод 'tableView: didSelectRowAtIndexPath:' в вашем классе 'StateContacts.m'. Я думаю, что ваш 'NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow];' не возвращает действительное значение, потому что я думаю, что не выбрана ячейка таблицы! Пожалуйста, подтвердите это также! –
Вы хотите иметь только viewWillAppear, а не viewDidLoador или иметь оба? Кроме того, я не уверен, что понимаю, зачем мне нужен метод tableView: didSelectRowAtIndexPath, если у меня есть строка с NSIndexPath. Спасибо за помощь. –