2015-07-28 5 views
-4

У меня есть представление, которое состоит из ярлыка, который изменяется динамически. Как я могу поместить текст в метку в массив, а затем передать его другому контроллеру вида ?Как передать метку внутри метки другому контроллеру представления в swift

+0

Какую часть вы точно придерживаетесь? Вы когда-нибудь использовали табличный вид раньше? Можете ли вы предоставить более подробную информацию о «изменениях динамически»? – nhgrif

+0

@nhgrif да есть. Это то, что вы могли бы назвать новичком в iOS, поскольку я только начал развиваться в последнее время. Чтобы расширить свои знания и улучшить свои навыки, я больше разрабатываю приложение QRScanner, и у меня есть 2 вида (например, View A & B). В виду A Я успешно выполнил часть QRScanning, и я хранил QR-отсканированную информацию (например, ссылки на сайты, имена, цифры) на ярлыке. В виду, что BI имеет пустой табличный вид, я хочу иметь возможность заполнять ячейки в таблицеView с помощью отсканированных данных, хранящихся в метке вида A.Am всасывает, что делать, чтобы заполнить ячейки представления таблицы данными с метки – Sar

+0

Когда вы раньше использовали табличный вид, как вы заполняли данные в них? – nhgrif

ответ

0

Создайте структуру данных, такую ​​как NSDictionary или NSArray, и сохраните детали своего вида A в нем. Тогда, когда ваш вид B называется, передать эти значения View B и использовать его для заполнения Вашего TableView

примера быстрой

  • ViewController класса

класса ViewController: UIViewController {

var label1 = UILabel() 
var label2 = UILabel() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view, typically from a nib. 

} 

func updateLabels() 
{ 

    label1.text = "LABEL 1" 
    label2.text = "LABEL 2" 
} 


///If you are using Xibs 

@IBAction func loadTableViewController() 
{ 
    // Create a data structure for the data you want to send 
    var array : NSMutableArray = NSMutableArray() 

    array.addObject(label1.text!) 
    array.addObject(label2.text!) 


    // Create a viewcontroller instance of tableViewController 
    let viewcontroller = tableViewController(nibName:"tableViewController",bundle:nil) 

    viewcontroller.dataSourceArray = array 


} 

//// If you are using Story Board 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 

    // Create a data structure for the data you want to send 
    var array : NSMutableArray = NSMutableArray() 

    array.addObject(label1.text!) 
    array.addObject(label2.text!) 

    // Create a new variable to store the instance of tableViewController 
    let destinationVC = segue.destinationViewController as! tableViewController 


    destinationVC.dataSourceArray = array 
} 
  • Класс наблюдения Tableviewcontroller

класс tableViewController: UITableViewController {

@IBOutlet var tableview: UITableView! 
var dataSourceArray : NSMutableArray! 


override func viewDidLoad() { 
    super.viewDidLoad() 
      // Do any additional setup after loading the view. 

    // dataSourceArray will contain the label details passed from previous view controller. 


} 



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 


    // you can set the details from the dataSourceArray 

} 



override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    // you can set the details from the dataSourceArray 
} 
+0

Можете ли вы привести пример о том, как это сделать?спасибо – Sar

+0

проверить обновленный ответ –

1

Ну ваш вопрос не так ясен, но, как я могу предсказать, вы перемещаетесь с точки зрения этикетки в виде таблицы и хотим, чтобы показать все эти значения ярлык в виде таблицы. Вы можете достичь этого, поместив все значения этих меток в изменяемый массив и в контроллер представления таблиц, создайте свойство типа NSMutableArray. и во время навигации поместите массив меток в свойство контроллера табличного представления. Вы можете увидеть приведенный ниже код для справки.

Ярлык View Controller

@interface DummyViewController(){ 
    NSMutableArray *array; 
} 

@end 

@implementation DummyViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([segue.identifier isEqualToString:@"segue"]) { 

     array = [[NSMutableArray alloc]initWithObjects:label1.text,label2.text,label3.text nil]; 

     FinalTableViewController *view = [self.storyboard instantiateViewControllerWithIdentifier:@"view"]; 
     view.dataArray = array; 
    } 

} 

В контроллере представления таблицы

.h файл

@interface DummyViewController : UIViewController 

    @property (nonatomic,strong) NSMutableArray *dataArray; 

@end 

Теперь использовать этот массив данных в методах вид делегата таблицы для заполнения данных. Если вы нашли ответ полезным, не забудьте сделать зеленый галочку.

+0

приведенный выше код находится в объекте C я ищу, как к нему в swift – Sar

+0

Я просто дал вам базовые знания о том, как вы можете это реализовать, Все, что вам нужно, это изменить приведенный выше код в быстром синтаксисе –