Файл: ContactsViewController.m
В этом файле я использую метод didSelectRowAtIndexPath, чтобы выдвинуть новый контроллер представления, чтобы отобразить информацию об имени, которое было нажато на контроллере табличного представления.View Controller, который будет отображать информацию об имени, внедряется в Swift.Часть, на которую я ссылаюсь в этом коде, находится в методе didSelectRowAtIndexPath, строка:
_myIndex = indexPath.row;
Я считаю, что indexPath.row должен возвращать индекс имени, которое было нажато в контроллере табличного представления.
#import "ContactsViewController.h"
#import "Contacts-Swift.h"
@interface ContactsViewController ()
@property (nonatomic, readwrite, strong) NSMutableArray* contacts;
@property (nonatomic, readwrite) NSInteger myIndex;
@end
@implementation ContactsViewController
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
/*NSArray *contactArray = @[@"Johnny Appleseed", @"Paul Bunyan", @"Calamity Jane"];
_contacts = [NSMutableArray arrayWithArray:contactArray];*/
/*Contact *c1 = [[Contact alloc] initWithName: @"Johnny"];
Contact *c2 = [[Contact alloc] initWithName: @"Paul Bunyan"];
Contact *c3 = [[Contact alloc] initWithName: @"Calamity Jane"];*/
// _contacts = [NSMutableArray arrayWithArray: @[c1, c2, c3]];
self.contacts = [NSMutableArray array];
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.tableView registerClass: [UITableViewCell class]
forCellReuseIdentifier:@"UITableViewCell"];
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return self.contacts.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
Contact *contact = self.contacts[indexPath.row];
cell.textLabel.text = contact.name;
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ContactsViewController *viewController = [self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"the"];
[self.navigationController pushViewController:viewController animated:YES];
_myIndex = indexPath.row;
}
Файл: ContactsViewController.h
Это файл заголовка, который я использую, чтобы иметь доступ к целевым методам и переменным C при работе в файле swift.(Я не очень хорошо знаком с целью C, поэтому существует большая вероятность того, что эта реализация является причиной моих проблем).
#import <UIKit/UIKit.h>
@interface ContactsViewController : UITableViewController <UITableViewDelegate>
@property (nonatomic, readonly) NSInteger myIndex;
@property (nonatomic, readonly, strong) NSMutableArray* contacts;
@end
Файл: ExistingContactViewController.swift
В ExistingContactViewController Iя просто пытаюсь установить метку firstName, равную тексту, который присутствует в массиве контактов в indexPath.row (в файле ContactsViewController.m).
import UIKit
@objc class ExistingContactViewController: UIViewController {
var contactsObject = ContactsViewController()
@IBOutlet weak var firstName: UILabel!
@IBOutlet weak var lastName: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
print("\(contactsObject.myIndex)")
firstName.text = contactsObject.contacts[contactsObject.myIndex] as? String
}
При щелчке имен, добавляемых в контроллер табличного представления, единственный напечатанный индекс
print("\(contactsObject.myIndex)")
равен 0. Это говорит о том, что я не собираю индекс изимя, которое коснулось.
Изображение myStoryboard Самая нижняя сцена - это та, в которой я пытаюсь изменить метку имени, чтобы отобразить имя ячейки, к которой подключен.
Мне не удалось изменить название этого ярлыка при нажатии на ячейку.Я был в состоянии реализовать эту функцию при использовании просто быстрых файлов (через просмотр многочисленных видео).Я уверен, что есть ключевая концепция, которую мне не хватает в файлах C, поэтому любые предложения и / или указатели очень ценятся.Если потребуется дополнительная информация, дайте мне знать!
Спасибо.