如何通过TabBarIOS更改视图时更改导航栏标题和按钮?

时间:2015-03-29 23:37:56

标签: react-native

我正在尝试制作一个简单的基于标签的反应原生导航应用,类似于UIExplorer中的Tabbar演示。但是,当我选择不同的选项卡时,我想要更改导航栏的标题以及左右导航栏按钮。这种导航栏行为的一个例子是“时钟”和“时钟”。 iPhone上的应用程序。

UIExplorer的Tabbar演示只是取代了页面内的视图。我尝试嵌入了一个' NavigatorIOS'作为Tabbar项的子组件,但它给出了一个错误:' Invariant Violation:onlyChild必须传递给一个孩子只有一个孩子。'。作为一种解决方法,具有手动修改导航栏标题和按钮的功能可能会起作用,但我也没有成功。

1 个答案:

答案 0 :(得分:2)

...试

var TabBarItemIOS = TabBarIOS.Item;
var homeView = require('./App/Views/Home');
var historyView = require('./App/Views/History');

var myapp = React.createClass({

    getInitialState: function() {
        return {
            selectedTab: 'homeTab',
        };
    },

    render: function() {

        return (
            <TabBarIOS
                selectedTab={this.state.selectedTab}>
                <TabBarItemIOS
                    accessibilityLabel="Home"
                    title="Home"
                    name="homeTab"
                    selected={this.state.selectedTab === 'homeTab'}
                    onPress={() => {
                        this.setState({
                            selectedTab: 'homeTab'
                        });
                    }}>
                <NavigatorIOS
                    tintColor='#FF6600'
                    initialRoute={{
                        title: 'Home',
                        component: homeView,
                    }}/>
                </TabBarItemIOS>

                <TabBarItemIOS
                    accessibilityLabel="History"
                    title="History"
                    name="historyTab"
                    selected={this.state.selectedTab === 'historyTab'}
                    onPress={() => {
                        this.setState({
                            selectedTab: 'historyTab',
                        });
                    }}>
                    <NavigatorIOS
                        tintColor='#FF6600'
                        initialRoute={{
                            title: 'History'
                            component: historyView,
                        }}/>
                </TabBarItemIOS>
            </TabBarIOS>
        );
    }
});
这将使Tabs“Home”&amp;更新Navbar标题时的“历史记录”。