1

我有一个 EnableSearch = true 的 DialogViewController。搜索工作正常并在对话框中显示结果。如果我导航到结果元素或另一个选项卡,然后返回搜索选项卡并尝试点击任何搜索结果元素,我会在 DialogViewController 的第 463 行得到“参数超出范围。\n参数名称:索引” .cs (var element = section.Elements [indexPath.Row];)。

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);
                    })
                }
            };
        }   
    }
4

1 回答 1

1

答案是覆盖ViewWillAppear()并将我的调用CreateUI()从构造函数移动到ViewWillAppear(). 我还不得不EnableSearch = true搬回构造函数,因为它应该在之前设置ViewWillAppear()

于 2010-08-21T20:11:07.320 回答