【问题标题】:MonoTouch Dialog's UITableView. How to handle taps?MonoTouch Dialog 的 UITableView。如何处理水龙头?
【发布时间】:2011-10-17 21:58:57
【问题描述】:

MonotouchDialog 让创建 UITableView 对话框变得非常容易,但有时会弹出类似这样的问题:

MonoTouch Dialog. Buttons with the Elements API

现在,我有一个类似的问题,但完全不同:

List<User> users = GetUsers();

var root = 
   new RootElement ("LoginScreen"){
     new Section ("Enter your credentials") {
       foreach(var user in users)
         new StyledStringElement (user.Name, ()=> {
            // tap on an element (but which one exactly?)
         }
     ),
   }

navigation.PushViewController (new MainController (root), true);

现在StyledStringElement的构造函数的第二个参数的类型是NSAction委托,并且不带任何参数,现在我不知道如何确定究竟是哪个元素被点击了。

如何获得?

【问题讨论】:

    标签: c# uitableview xamarin.ios monotouch.dialog


    【解决方案1】:

    如果是Tapped,则它已被选中。因此,您应该能够从 StyleStringElement 继承并覆盖Selected 方法以实现相同的目标。

    例如

    class UserElement : StyleStingElement {
        public UserElement (User user) { ... }
    
        public override Selected (...)
        {
            // do your processing on 'user'
            base.Selected (dvc, tableView, indexPath);
        }
    }
    

    对于 Touch.Unit,我为我拥有的每个项目创建了一个新的 *ElementTestSuiteElement、TestCaseElement、TestResultElement... 以便能够自定义每个项目并适应(有点)他们的行为,但我没有用这个Selected 替换Tapped。您可能想要检查,但它不适合您的代码模式来创建元素。

    【讨论】:

      【解决方案2】:

      “...任何其他名字的花?”

      如果您仔细观察,NSAction 只是代表。我更喜欢将 Action / Func 传递给那些引用包含在...容器控制器中的参数。

      因此,让您拥有一个推送 DialogViewController 的 UINavigationController。当你的元素被选中时,你提供你传递给元素的唯一用户并从那里开始:-)

      public class MyNavController : UINavigationController
      {
          Action<User> UserClickedAction;
      
          public MyNavController()
          {
              UserClickedAction = HandleUserClicked;
          }
      
          public void HandleUserClicked(User user)
          {
              ...
          }
      }
      

      【讨论】:

      • 没听懂..这适用于我的情况吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多