上週我問過類似的問題,是能夠得到使用addSubview調用像這樣的工作:
var mainView = args.object.getViewById('main-view');
mainView.ios.addSubview(publisher.view);
我的XML看起來像:
<Page loaded="pageLoaded">
<StackLayout id="main-view">
</StackLayout>
</Page>
你需要一個ID根據您在XML中創建的視圖,然後在函數的代碼隱藏文件中,使用args.object.getViewById('yourViewID');
創建變量,然後調用viewVariable.ios.addSubview('view-you-want-to-add');
。
在我的情況下,我的框架的publisher
對象是我傳遞給.ios.addSubview()
調用。
全部代碼隱藏文件以及:
var vmModule = require("./main-view-model");
// moving OpenTok out of the plugin and into code base for dev.
// Will move into a plugin after
var OpenTok = {
createSession: function(options) {
var apiKey = 'private';
var sessionID = 'private';
var delegate = this;
// Framework Method
var session = OTSession.alloc().init();
return session.initWithApiKeySessionIdDelegate(apiKey, sessionID, delegate);
},
createPublisher: function() {
// Framework Method
var publisher = OTPublisher.alloc().init();
return publisher;
}
};
function pageLoaded(args) {
var page = args.object;
var mainView = args.object.getViewById('main-view');
var token = "private";
var error = new interop.Reference();
page.bindingContext = vmModule.mainViewModel;
var session = OpenTok.createSession();
// Framework Method
session.connectWithTokenError(token, error);
var publisher = OpenTok.createPublisher();
// Framework Method
publisher.initWithDelegate(publisher);
// Native iOS Method
mainView.ios.addSubview(publisher.view);
var checkConnectionStatus = setInterval(function(){
if (session.sessionConnectionStatus == 1) {
console.log('clear interval');
clearInterval(checkConnectionStatus);
// Framework Method
session.publishError(publisher, null);
}
}, 1000);
}
exports.pageLoaded = pageLoaded;
這是我的問題,可能還提供了更深入的瞭解,如果你還停留:Nativescript addSubview