MonoTouch UITableViewController和TableFooterView

时间:2011-10-29 10:07:04

标签: iphone mono uikit xamarin.ios monodevelop

我正在尝试使用MonoDevelop(v2.8)和MonoTouch(v4.2.2)开发一个小型iPhone应用程序。

我的主屏幕由UITableViewController表示,它使用UITableView进行演示。我想用其他一些控件(两个标签和两个按钮)填充UITableView.TableFooterView(这是一个UIView对象)。

为此,我创建了一个名为SearchView的“子视图”,它由UIViewController表示,并使用简单的UIView进行演示。我将此视图指定为tableview的页脚视图。

public partial class HomeScreen : UITableViewController
{    
    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        SearchViewController searchViewController = new SearchViewController();
        this.TableView.TableFooterView = searchViewController.View;

    }
}

这是对的吗?

假设你通常使用UIViewController创建一个视图(UIView)并使用它是正确的吗?

2 个答案:

答案 0 :(得分:1)

- (void)loadView {
[super loadView];
sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,320,30)];
sBar.delegate = self;
[self.view addSubview:sBar];

你可以添加这样的子视图,sbar是搜索栏,你也可以添加任何控制器,如按钮,标签,textview,textfield。

答案 1 :(得分:0)

在你的UITableViewDataSource中你可以覆盖公共虚拟UIView GetViewForFooter(UITableView tableView,int sectionIndex)

    public override UIView GetViewForFooter(UITableView tableView, int sectionIndex)
    {
        // Write a method to get the proper Section via the sectionIndex
        var section = GetSection(sectionIndex);
        if (section != null)
        {
            if (section.FooterView == null && !string.IsNullOrEmpty(section.FooterText))
            {
                // Create your FooterView here 
                section.FooterView = CreateFooterView(tableView, section.FooterText);
            }

            return section.FooterView;
        }

        return null;
    }

从iOS 5开始,您还需要覆盖

public virtual float GetHeightForFooter(UITableView tableView, int sectionIndex)

并返回FooterView的高度