2016-03-07 97 views
0

問題是我有一個tableview與自定義單元格。在單元格內,我有一個按鈕。當按鈕被點擊時,它應該改變tableview之外的標籤文本。如何更改桌面視圖之外的標籤文本時,在桌面視圖中的按鈕是點擊

編輯: 我試圖改變的標籤文本是在不同的視圖。 ViewController有一個tableview和一個標籤視圖。在tableview裏面有一個按鈕,當它被點擊時它改變標籤的視圖文本。

CustomCell和TableSource:

namespace Testing.iOS 
{ 
    public partial class CustomCell : UITableViewCell 
    { 

     // Code omitted 

     public class TableSource : UITableViewSource 
     { 
      ViewController vc = new ViewController(); 

      public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
      { 
       var cell = tableView.DequeueReusableCell (CustomCell.Key) as CustomCell; 

       if (cell == null) 
       { 
        cell = new CustomCell(); 
        var views = NSBundle.MainBundle.LoadNib("CustomCell", cell, null); 
        cell = Runtime.GetNSObject(views.ValueAt(0)) as CustomCell; 
       } 

       cell.btn.TouchUpInside += (object sender, EventArgs e) => 
       {  
        // Change label that is outside tableview 
        vc.updateLabel(); 
       }; 

       // Code omitted 

       return cell; 
      } 
     } 
    } 
} 

視圖控制器:

namespace Testing.iOS 
{ 
    public partial class ViewController : UIViewController 
    {  
     public ViewController() : base ("ViewController", null) 
     { 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      tableView.RegisterNibForCellReuse (CustomCell.Nib, "CustomCell"); 
      tableView.Source = new CustomCell.TableSource(); 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      base.DidReceiveMemoryWarning(); 
     } 

     public void updateLabel() 
     { 
      label.Text = "testing"; 
     } 
    } 
} 
+0

那麼,你所面臨的問題,從問題是相當平直改變內部按鈕動作標籤文本。 –

+0

問題是:當tableview中的按鈕被點擊時,我無法更改tableview之外的文本。 – MartDavious

回答

0

使用協議和委託。 首先在CustomCell類中寫出CustomCellDelegate協議,方法updateLabel()也通過self作爲參數之一。

-(void)updateLabelForCell:(UITabelViewCell *)cell;

並在updateLabel()方法,然後調用該委託方法

[self updateLabelForCell:self];

ViewController類中,實現委託方法。基於稱爲更新標籤的功能。 將您的ViewController設置爲tableviewcell的委託。

+0

你可以通過,再次解釋最後一段,謝謝。 – MartDavious

+0

我的意思是在'cellForRowAtIndexpath:'方法中設置'cell.delegate = self'。你可以得到有關他的單元格的信息,因爲它也通過代理方法 – Bhargavi

0

在的cellForRowAtIndexPath方法中添加以下代碼


然後處理在BtnClicked方法的邏輯。

-(void)BtnClicked:(UIButton *)sender{ 

     labelOutlet.text = @"new text"; 

} 


+0

傳遞,這是行不通的。該標籤不在tableviewcell中 – MartDavious

+0

你有沒有試過這個代碼?標籤是否在tableview之外並不重要。 –

+0

你的代碼是在Objective-C中,而我正在使用C#。我不能將第一行代碼翻譯成C# – MartDavious