2010-08-21 3 views
1

J'ai un DialogViewController avec EnableSearch = true. La recherche fonctionne bien et affiche les résultats dans la boîte de dialogue. Si je navigue dans un élément de résultat ou dans un autre onglet ET que je reviens à l'onglet de recherche et que j'essaie d'appuyer sur l'un des éléments de résultat de la recherche, l'argument "Argument est hors de portée". .cs (var element = section.Elements [indexPath.Row];).Argument hors de portée, DialogViewController avec recherche activée

public class SearchView : DialogViewController 
    { 
     IFlickService _flickService; 
     static IEnumerable<Flick> _flicks; 

     public SearchView(IFlickService flickService) : base (UITableViewStyle.Grouped, null, true) 
     { 
      _flickService = flickService; 
      _flicks = new List<Flick>(); 

      CreateUI(); 
     } 

     public override void SearchButtonClicked (string text) 
     { 
      base.SearchButtonClicked (text); 
      _flicks = _flickService.Search(text); 
      CreateUI();   
     } 

     void CreateUI() 
     { 
      EnableSearch = true; 

      Root = new RootElement("Search For Flicks") { 
       new Section(){ 
        from f in _flicks 
        select (Element) new FlickElement(f, delegate { 
         NavigationController.PushViewController(new FlickDetailView(_flickService, f), true); 
        }) 
       } 
      }; 
     } 
    } 

Répondre

1

La réponse était de passer outre ViewWillAppear() et passer mon appel à CreateUI() du constructeur à ViewWillAppear(). J'ai également dû déplacer EnableSearch = true dans le constructeur car il devrait être défini avant ViewWillAppear().

Questions connexes