2015-07-28 44 views
-4

我有一個視圖,它包含一個動態變化的標籤。如何將標籤中的文本放到數組中,然後將它傳遞給另一個視圖控制器?如何將標籤內的標籤傳遞給另一個視圖控制器swift

+0

哪個部分完全卡住?你有沒有使用過表格視圖?你能提供更多關於「動態變化」的細節嗎? – nhgrif

+0

@nhgrif是的,我有。你可能稱之爲iOS開發的新手,因爲我最近纔開始開發。爲了擴展我的知識和磨練我的技能,我開發了一個QRScanner應用程序,並有2個視圖(例如視圖A和B)。鑑於A我已成功完成QRScanning部分,並將QR掃描的詳細信息(例如網站鏈接,姓名,號碼)存儲在標籤中。在視圖BI中有一個空白表格視圖我希望能夠使用存儲在視圖標籤A中的掃描詳細信息填充tableView中的單元格.Am吸引瞭如何處理以使用標籤中的數據填充表格視圖單元格 – Sar

+0

以前使用過表格視圖時,您是如何在其中填充數據的? – nhgrif

回答

0

創建一個像NSDictionary或NSArray的數據結構,並將視圖A的詳細信息保存到其中。然後,當您的視圖B被調用時,這些值傳遞到視圖B,並用它來填充你的TableView在迅速

例如

  • 視圖控制器類

類的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 class

類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

嗯,你的問題不是很清楚,但我可以預測的是,你從標籤視圖表視圖導航和要顯示的所有值在tableview中的標籤。 您可以通過將這些標籤的所有值放入一個可變數組和表格視圖控制器中,使屬性爲NSMutableArray。並在導航時將標籤視圖數組放入表視圖控制器的屬性中。 你可以看到下面的代碼以供參考。

標籤視圖控制器

@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我正在尋找如何在迅速 – Sar

+0

我只是給你一個關於如何實現這一點的基本知識, 所有你需要的是改變上面的代碼在迅速的語法 –

相關問題